您的位置:首页 > 其它

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

2018-01-25 21:32 246 查看

表单的校验错误的输出

在每一个检验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">
<
d478
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基础
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐