SpringMVC对输入表单校验

使用JSR-303验证,同时错误信息从资源文件中读取。
添加Hibernate-validator依赖

       <!-- SpringMVC 检验框架包 -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.1.2.Final</version>
        </dependency>

SpringMVC.xml配置校验器

    <!-- Hibernate Validator校验 -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <!-- 使用HibernateValidator校验器 -->
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
        <property name="validationMessageSource" ref="messageSource"/>
    </bean>
    <!-- 校验错误信息配置 -->
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>
                    classpath:ValidationMessage
                </value>
            </list>
        </property>
        <!-- 资源文件的编码格式 -->
        <property name="fileEncodings" value="utf-8"/>
        <!-- 对资源文件的内容缓存的时间 -->
        <property name="cacheSeconds" value="60"/>
    </bean>

同时需要有资源文件ValidationMessage,需要注意的是在idea中,上面的classpath:ValidationMessage会显示红色,可以无视它。

firstName.size = First name must be between {min} and {max}
lastName.size = Last name must be between {min} and {max}
username.size = username must be between {min} and {max}
password.size = username must be between {min} and {max}
email.valid = The email address must be valid

然后SpringMVC.xml添加

<mvc:annotation-driven conversion-service="mvcConversionService" validator="validator"/>

XML配置部分完成。

添加pojo

public class Spitter {
    private Long id;

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

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

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

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

    @NotNull
    @Email(message = "{email.valid}")
    private String email;
    ...
}
  • @NotNull表示修饰的属性内容不能为空
  • @Size(min = 5, max = 16, message = "{username.size}")表示修饰的属性的字符内容长度在5~16之间; message表示如果不合法,输出的错误信息.

jsp页面表单

    <%--使用Spring表单绑定标签--%>
    <sf:form method="POST" commandName="spitter">
        <sf:label path="firstName" cssErrorClass="error">First Name</sf:label>
        <sf:input path="firstName" cssErrorClass="error"/>
        <sf:errors path="firstName" cssClass="error"/><br/>
        <sf:label path="lastName" cssErrorClass="error">Last Name</sf:label>
        <sf:input path="lastName" cssErrorClass="error"/>
        <sf:errors path="lastName" cssClass="error"/><br/>
        <sf:label path="email" cssErrorClass="error">Email</sf:label>
        <sf:input path="email" type="email" cssErrorClass="error"/>
        <sf:errors path="email" cssClass="error"/> <br/>
        <sf:label path="username" cssErrorClass="error">Username</sf:label>
        <sf:input path="username" cssErrorClass="error"/>
        <sf:errors path="username" cssClass="error"/> <br/>
        <sf:label path="password" cssErrorClass="error">Password</sf:label>
        <sf:input path="password" type="password" cssErrorClass="error"/>
        <sf:errors path="password" cssClass="error"/> <br/>
        <input type="submit" value="Register">
        <!-- *通配符表示处理所有的error,默认显示的错误使用<span>标签,element这里使用<div>标签 -->
        <%--<sf:errors path="*" cssClass="error" element="div"/>--%>
    </sf:form>

控制器

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

    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public String processRegistration(
            @Valid Spitter spitter,
            Errors errors) {
        if(errors.hasErrors()) {
            return "registerForm";
        }
        return "redirect:/spitter/" + spitter.getUsername();
    }

发生错误时的显示的效果
错误显示

可以看到发生错误的时候显示的是资源文件内定义的内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值