表单的校验错误的输出到特定位置

表单的校验错误的输出

在每一个检验input的后面输出自己的错误信息,不将所有的都输出在一起。
首先jsp页面上使用
form:form的要求是在跳到这个页面的时候,进行渲染form必须有个对象传过来,即commondName中的对象名

<@%taglib prefix="form" uri="" />
//body体里面用<form:form>如下:
<form:form commandName="test" action="${pageContext.request.contextPath}/login" method="post">
    <table>
        <tr>
            <td>
            //path属性将目标指向test对象中的id属性,下面的意思相同,cssErrorClass 属性表示如果不符合要求就执行的css,自己写就行
                <form:label path="id" cssErrorClass="a">id:</form:label>
            </td>
            <td>
                <form:input path="id" cssErrorClass="t"/>
                //下面这个标签=就表示如果,校验失败,就渲染下面的一行代码,如果成功,就不进行渲染,
                <form:errors path="id" cssClass="errorinput" />
            </td>
        </tr>
        <tr>
            <td>
                <form:label path="name" cssErrorClass="a">name: </form:label>
            </td>
            <td>
                <form:input path="name" cssErrorClass="t"/>
                <form:errors path="name" cssClass="errorinput" />
            </td>
        </tr>
        <tr>
            <td>
                <input type="submit" value="submit"/>
            </td>
        </tr>
    </table>
</form:form>
//Test类的内容
 @Size(min = 1,max = 2,message = "{id.length}")
    private String id;

    @Size(min = 1,max = 2,message = "{name.length}")
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

上面说过,form:form的要求是在跳到这个页面的时候,进行渲染form必须有个对象传过来,即commondName中的对象名
所以要有一个传对象过去的controller方法,如下:

@Controller
public class TestController {
    //先传一个对象过去用于渲染
    @RequestMapping("/")
    public String index(Test test,Model model) {
        model.addAttribute("test",test);
        return "index";
    }
//@Valid Test test, Errors errors, 固定顺序和写法,保证错误信息的传递
    @RequestMapping("/login")
    public String login(@Valid Test test, Errors errors, Model model) {
        model.addAttribute("test",test);
        model.addAttribute("errors",errors);
        //测试是不是校验失败,如果失败,返回原页面,上面的两句表示将test对象和errors传到jsp
        if(errors.hasErrors()){
            return "index";
        }else{
            return "urlTestSuccess";
        }
    }

spring的配置文件

//注入校验器
  <mvc:annotation-driven  validator="validation" />

    <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" id="validation">
    <!--校验器-->
    <property value="org.hibernate.validator.HibernateValidator" name="providerClass"/>
    <property name="validationMessageSource" ref="messageSource"/>

</bean>
//配置信息源,让校验器引用
<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" id="messageSource">
<property name="basenames">
    <list>
        <value>classpath:validation</value>
    </list>
</property>
<property value="utf-8" name="defaultEncoding"/>
<!--资源文件120读取一次-->
<property value="120" name="cacheSeconds"/>
</bean>

最后配置 .properties文件就可以了

id.length=123465897
name.length=987456321

jar包要齐全,而且 .properties的文件要让spring找到,附录validation的jar包 (maven格式)

  </dependency>
    <dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0.2</version>
  </dependency>


  <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.2.2.Final</version>
</dependency>

看不懂,先看看spring基础

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值