渲染Web视图——使用Spring的表单绑定JSP库

将表单绑定到模型上

  • Sping的表单绑定JSP标签库与原生的HTML标签库的区别在于他们会绑定模型中的一个对象,能够根据模型中对象的属性填充值
  • 使用表单绑定库,需要在JSP页面声明:
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
  • 一个注册页面的示例

Regiter

First Name:
Last Name:
User Name:
Password:

会渲染一个HTML

标签,但它会通过commandName属性构建针对某个模型对象的上下文信息。在其他的表单绑定标签中,会引用这个模型对象的属性。
因为上面的代码中,commandName属性设置为spitter,因此,在模型中必须要有一个key为spitter的对象,否则的话,表单不能正常渲染(会出现JSP错误)。于是必须修改一下SpitterController:

 @RequestMapping(value = "/register", method = RequestMethod.GET)
    public String showRegistrationForm(Model model) {
        model.addAttribute(new Spitter());
        return "registerForm";
    }

展现错误

  • 在输入域的旁边展示错误信息

        First Name: 
             
...

path属性设置成firstName,也就指定了要显示Spitter模型中哪个属性的错误。通过设置cssClass属性可以修改错误的样式。

  • 将所有错误信息在同一个地方显示
    移除每个输入域上的 元素,并将其放到表单的顶部

        
       ...
    

此处path被设置为“*”,这是一个通配符选择器,会告诉展现所有属性的错误。

  • 着重显示需要修正的输入域
    通过为每个输入域设置cssErrorClass属性,也可以将label都替换为,并设置它的cssErrorClass属性。

        
        First Name:
        
...
  • 为了能够让这些错误信息更加易懂,可以在Spitter类的校验注解上设置message属性。
@NotNull
    @Size(min = 2, max = 30, message = "{firstName.size}")
    private String firstName;

    @NotNull
    @Size(min = 2, max = 30, message = "{lastName.size}")
    private String lastName;

    @NotNull
    @Size(min = 5, max = 16, message = "{userName.size}")
    private String userName;

    @NotNull
    @Size(min = 2, max = 25, message = "{password.size}")
    private String password;

将上面每个域@Size注解的message设置为一个字符串,如果没有用大括号括起来的话,message中的值将会作为展现给用户的错误信息。但是使用了大括号之后,我们使用的就是属性文件中的某一个信息,给属性包含了实际的信息
接下来需要创建一个ValidationMessages.properties的文件,并将其放在根类路径下

firstName.size=First name must be between {min} and {max} characters long.
lastName.size=Last name must be between {min} and {max} characters long.
userName.size=userName must be between {min} and {max} characters long.
password.size=Password must be between {min} and {max} characters long.

ValidationMessages.properties文件中的每条信息的Key值对应于注解中message属性占位符的值。同时最大和最小长度没有硬编码在ValidationMessages.properties文件中,也是用了占位符——{max}和{min},他们会引用@Size注解上所设置的max和min属性。
可以创建任意数量的ValidationMessages.properties文件,来涵盖所支持的语言和地区

你可能感兴趣的:(渲染Web视图——使用Spring的表单绑定JSP库)