Spring FORM标签库
Spring MVC提供了一个JSP标签库(Spring Form),使将表单元素绑定到Model 数据变得更加容易。Spring Framework 提供了一些标签,用于显示 错误,设置主题和输出国际化消息。
使用Spring Form标签库的语法
需要在jsp文件头部加上:
本示例中使用的表单标签
呈现HTML “form” 标签,并向内部标签公开绑定路径以进行绑定。
使用绑定值呈现类型为“text”的HTML“input”标记。
在HTML'span'标签中呈现字段错误。
使用绑定值呈现类型为“ password”的HTML “input”标签。
呈现类型为“radio”的HTML“ input”标签。
呈现HTML“select”元素。支持数据绑定到所选选项。
呈现单个HTML“option”。根据绑定值适当设置“selected”。
呈现HTML“textarea”。
呈现类型为“checkbox”的HTML“input”标签。
简单注册表单示例
1.修改web.xml以配置Dispatcher Servlet。
web.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
contextConfigLocation
/WEB-INF/applicationContext.xml
org.springframework.web.context.ContextLoaderListener
dispatcher
org.springframework.web.servlet.DispatcherServlet
2
dispatcher
*.html
30
index.jsp
创建一个dispatcher-servlet.xml文件,其中包含所有用于处理用户请求的配置bean,它处理用户请求并将其分派到各个控制器。
dispatcher-servlet.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
false
index
success
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
3.创建一个Jsp文件以从用户index.jsp接收输入,该文件包含带有Spring Form标签的所有表单字段。
index.jsp
/p>
"http://www.w3.org/TR/html4/loose.dtd">
Welcome to Spring Web MVC projectSpring Form tags Example
User Name:
Password:
First Name:
Last Name:
Gender: Male
Female
Country :
India
USA
Australia
Address:
Select any :
Check Box1
Check Box2
4.创建另一个Jsp文件success.jsp,它是用于显示输出的Spring视图。在此文件中,我们使用表达式语言来显示详细信息。
success.jsp
/p>
"http://www.w3.org/TR/html4/loose.dtd">
Spring Form Tags ExampleSpring Form tags examples
User Name: ${uname}
First Name: ${fname}
Last Name: ${lname}
Gender: ${gender}
Country: ${country}
Address: ${addr}
Selected Check box: ${cb}
5.创建一个Java类文件Registration.java,其中包含注册应用程序的业务逻辑。在这里,此文件包含8个私有变量,它们分别具有getter和setter方法,用于存储注册细节。
Registration.java
public class Registration {
private String username;
private String password;
private String fname;
private String lname;
private String gender;
private String country;
private String addr;
private String cb;
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getCb() {
return cb;
}
public void setCb(String cb) {
this.cb = cb;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Registration() {
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
6.创建一个RegistrationFormController.java文件,该文件扩展了SimpleFormController以控制用户请求并返回相应的ModelAndView对象。
RegistrationFormController.java
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class RegistrationFormController extends SimpleFormController {
@Override
protected ModelAndView onSubmit(Object command) throws Exception {
Registration reg=(Registration)command;
String uname=reg.getUsername();
String fname=reg.getFname();
String lname=reg.getLname();
String gender=reg.getGender();
String country=reg.getCountry();
String cb=reg.getCb();
String addr=reg.getAddr();
ModelAndView mv = new ModelAndView(getSuccessView());
mv.addObject("uname",uname);
mv.addObject("fname",fname);
mv.addObject("lname",lname);
mv.addObject("gender",gender);
mv.addObject("country",country);
mv.addObject("cb",cb);
mv.addObject("addr",addr);
return mv;
}
}
7,创建一个registrationValidator.java文件来验证诸如用户名和密码之类的表单字段不能为空.DispatcherServlet负责赋予属性以将Validator添加到用户请求并执行验证。
registrationValidator.java
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
public class registrationValidator implements Validator
{
public boolean supports(Class cl) {
return Registration.class.isAssignableFrom(cl);
}
public void validate(Object ob, Errors errors) {
Registration reg=(Registration)ob;
if (reg.getUsername() == null || reg.getUsername().length() == 0) {
errors.rejectValue("username", "error.empty.username");
}
else if (reg.getPassword() == null || reg.getPassword().length() == 0) {
errors.rejectValue("password", "error.empty.password");
}
}
}
8,创建或修改 messages.properties 文件,其中包含各自键值的消息,在此文件中,我们为两个键值编写消息,分别为空用户名和空密码。
messages.properties
error.empty.username=Please Enter User name
error.empty.password=Please Enter Password
9,构建并运行应用程序
输出
访问页面:http://localhost:8080/Registration/index.html
清空密码时,使用spring错误标签显示相应的错误消息。
只有在正确验证用户名和密码后,我们才能提交表单。
显示输出,其中包含所有提交注册的值
原文使用的较早的Spring版本(<3),更新后的源码放在 https://github.com/yujiaao/sp... 供参考。