数据绑定和表单标签

  • 数据绑定

  数据绑定是将用户输入绑定到领域模型的一种特性,在Spring MVC的controller和view数据传递中,基于HTTP请求的特性,所有HTTP请求参数的类型均为字符串,如果模型领域需要绑定的类型为double或int,则需要手动进行类型转换,而有了数据绑定后,就不需要手动将HTTP请求中的String类型转换为模型需要的类型了,数据绑定的另一个好处是,当输入验证失败时,会重新生成一个HTML表单,无需重新填写输入字段。

  • 表单标签库

  表单标签库中包含了可以用在JSP页面中渲染HTML元素的标签。为了使用这些标签,必须在JSP页面开头处声明taglib指令。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

  表单标签库中有input、password、hidden、textarea、checkbox、checkboxes、radiobutton、radiobuttons、select、option、options、errors。表单标签有acceptCharset、commandName、cssClass、cssStyle、htmlEscape、modelAttribute等属性。

  1. input标签:input标签渲染<input type="text"/>元素,这个标签最重要的是path属性,该字段将输入绑定到form backing object的一个属性。如下所示,这个input标签被绑定到了user对象的userName属性上
    • <form:form modelAttribute="user" method="post" action="userSave">
          <fieldset>
              <p>
                  <label for="name">用户名:</label>
                  <form:input path="userName"/>
              </p>
          </fieldset>
      </form:form>
  2. password标签:渲染<input type="password"/>元素,password标签与input标签相似,只不过它有一个showPassword属性。
  3. textare标签:渲染一个HTML的textarea元素。textarea基本上就是支持多行输入的input元素。
  4. checkbox标签:渲染<input type="checkbox"/>元素,同样是通过path属性实现数据绑定,同时checkboxes渲染多个checkbox元素。
  5. radiobutton标签渲染<input type="radio"/>元素,radiobuttons渲染多个radio元素。
  6. select标签:渲染一个HTML的select元素,被渲染元素的选项可能来自赋予其items属性的Collection、Map、Array,或者来自一个嵌套的option或options标签。
  • 数据绑定范例

  如上分别介绍了数据绑定的定义和优势,以及一些表单标签,为了让大家能进一步了解上面的内容,范例中实现了用户类属性和JSP中表单的绑定,同时在JSP中分别展示了input、password、textarea、checkbox、select标签。

  我们首先看一下User类,类中包含User的属性,以及对属性字段的get和set方法:

public class User {
    private String userName;  //用户名
    private String password;  //密码
    private Integer sex;      //性别
    private boolean marriage; //是否结婚
    private ArrayList<String> hobby;        //兴趣爱好
    private ArrayList<String> contacts;//人脉
    private String carrer;   //职业
    private String houseRegister;   //户籍
    private String remark;   //个人描述
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getHouseRegister() {
        return houseRegister;
    }
    public void setHouseRegister(String houseRegister) {
        this.houseRegister = houseRegister;
    }
    public String getCarrer() {
        return carrer;
    }
    public void setCarrer(String carrer) {
        this.carrer = carrer;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Integer getSex() {
        return sex;
    }
    public void setSex(Integer sex) {
        this.sex = sex;
    }
    public boolean isMarriage() {
        return marriage;
    }
    public void setMarriage(boolean marriage) {
        this.marriage = marriage;
    }
    public ArrayList<String> getHobby() {
        return hobby;
    }
    public void setHobby(ArrayList<String> hobby) {
        this.hobby = hobby;
    }
    public ArrayList<String> getContacts() {
        return contacts;
    }
    public void setContacts(ArrayList<String> contacts) {
        this.contacts = contacts;
    }
}
View Code

相关文章:

  • 2021-12-22
  • 2022-12-23
  • 2021-05-30
  • 2022-01-04
  • 2022-12-23
  • 2021-08-19
  • 2022-12-23
  • 2021-09-04
猜你喜欢
  • 2021-10-23
  • 2021-07-13
相关资源
相似解决方案