bean validation跟springmvc里不进行验证,BindingResult的errors一直是0

smallblood 2015-03-05 01:40:22
照着官方文档和一大堆教程的配置,但是就是不进行验证,BindingResult的errors一直是0, hibernate-validator-5.1.3.Final.jar 和 validation-api-1.1.0.Final.jar 都导了,也没报错,就是明明我提交的是空信息但是errors一直是0。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.yg.controller"/>
<mvc:annotation-driven/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>


</beans>


User实体类
package com.yg.entity;

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Size;

/**
* Created by 光 on 2015/3/3.
*/
public class User {
@NotEmpty(message = "不能为空")
private String userName;
@Size(min = 5,max = 12,message = "密码长度为5-12位")
private String password;
private String nickName;


public User() {
}

public User(String userName, String password, String nickName) {
this.userName = userName;
this.password = password;
this.nickName = nickName;
}

public String getUserName() {
return userName;
}

public String getPassword() {
return password;
}

public String getNickName() {
return nickName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public void setPassword(String password) {
this.password = password;
}

public void setNickName(String nickName) {
this.nickName = nickName;
}
}


UserController类
package com.yg.controller;

import com.yg.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.validation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/**
* Created by 光 on 2015/3/3.
*/
@Controller
@RequestMapping("/user")
public class UserController {
private List<User> userList = new ArrayList<User>();

public UserController() {
userList.add(new User("luffy","123","路飞"));
userList.add(new User("nami","123","娜美"));
userList.add(new User("zero","123","索隆"));
userList.add(new User("sanji","123","香吉士"));
}

@RequestMapping("/users")
public String list(Model model){
model.addAttribute("users", userList);
return "/user/list";
}

@RequestMapping(value = "/add",method = RequestMethod.GET)
public String add(Model model){
model.addAttribute(new User());
return "/user/add";
}

@RequestMapping(value = "/add",method = RequestMethod.POST)
public String add(@Validated User user,BindingResult br){
System.out.println(br.getAllErrors().size());
if(br.hasErrors()){
System.out.println("进入");
return "/user/add";
}
userList.add(user);
return "redirect:/user/users";
}
}


添加信息的add.jsp
<%--
Created by IntelliJ IDEA.
User: 光
Date: 2015/3/4
Time: 10:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>添加用户</title>
</head>
<body>

<sf:form method="post" modelAttribute="user">
<sf:input path="userName" /><sf:errors path="userName"/> <br/>
<sf:password path="password"/><br/>
<sf:input path="nickName"/><br/>
<input type="submit" value="提交">
</sf:form>


</body>
</html>


我整了一天了,也没报错,就是不进行验证,对比了N个教程和官方文档都一样,但是别人的验证,我的没验证,实在没法了,求教啊
...全文
8029 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2017-05-27
  • 打赏
  • 举报
回复
引用 19 楼 dengqui 的回复:
[quote=引用 18 楼 gyf6067 的回复:] 试了一整个上午,终于解决了。 只要将【<mvc:annotation-driven/> 】提至 spring 配置文件的最前面,奇迹出现了!!!
就是这个原因,卧槽,太坑了[/quote] 为什么我提到最前面了还是没用啊
dengqui 2017-05-19
  • 打赏
  • 举报
回复
引用 18 楼 gyf6067 的回复:
试了一整个上午,终于解决了。 只要将【<mvc:annotation-driven/> 】提至 spring 配置文件的最前面,奇迹出现了!!!
就是这个原因,卧槽,太坑了
浪子不再独行 2016-12-16
  • 打赏
  • 举报
回复
试了一整个上午,终于解决了。 只要将【<mvc:annotation-driven/> 】提至 spring 配置文件的最前面,奇迹出现了!!!
qq_35910103 2016-11-22
  • 打赏
  • 举报
回复
是不是使用的是spring4mvc? 如果是的话,不用导入bean-validator.jar 而是导入hibernate-validator-5.3.2.Final中dist目录中的3个jar包以及dist/lib/require中的5个jar包
Wei_V5 2016-09-09
  • 打赏
  • 举报
回复
public String add(HttpServletRequest request, @Valid People people,BindingResult br, MultipartFile file){} public String add(@Valid People people, MultipartFile file, BindingResult br,HttpServletRequest request){} 求解,第一种传参顺序可以校验数据,能跳回到表单页面;第二种传参,如果是校验失败进不了该方法,浏览器直接400错误。 这是为什么
3Jinnnnn 2016-08-04
  • 打赏
  • 举报
回复
把工程的编码改成UTF-8试试,我之前在GBK的编码下怎么修改页面都没有错误信息,改成UTF-8后就有了。。。。。shit
xshirmp 2016-04-29
  • 打赏
  • 举报
回复
使用spring 4.0+的,安装官网配置,没问题
gouldZh 2015-12-29
  • 打赏
  • 举报
回复
可以将UserController类中属性List上,加入@Valid的注解即可
gouldZh 2015-12-29
  • 打赏
  • 举报
回复
楼主 ,请问现在发现问题的原因了吗,我也卡在这里了
  • 打赏
  • 举报
回复
是不是用的tomcat6,Hibernate Valid5.x和tomcat6有点冲突.我用4.3.2就没问题了.
weixin_32073519 2015-11-30
  • 打赏
  • 举报
回复
引用 9 楼 duocairens的回复:
应该是使用了myeclipse2014的原因
是的,我的也是2014 验证不起作用
duocairens 2015-08-08
  • 打赏
  • 举报
回复
应该是使用了myeclipse2014的原因
lorabit_cn 2015-06-03
  • 打赏
  • 举报
回复
添加hibernate-validator-4.3.1.Final.jar
梦起的地方 2015-05-28
  • 打赏
  • 举报
回复
楼主,问一下,你那个问题解决了吗???
豫让_______ 2015-04-08
  • 打赏
  • 举报
回复
验证器 org.springframework.validation.beanvalidation 是这个包里的, <mvc:annotation-driven validator="validator" />通知spring注解的方式注入validator 比如你的@Size @NotEmpty这些就自动注入了 <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="validationMessageSource" ref="messageSource" /> </bean> 中间那个property是配置国际化。
lshxqyj1 2015-04-07
  • 打赏
  • 举报
回复
问题解决了么? 通用出现了此问题, jar包配置文件都配好了.就是不校验. 不知道上面问题? 楼主解决了吗? 怎么解决的?
smallblood 2015-03-05
  • 打赏
  • 举报
回复
引用 3 楼 fangmingshijie 的回复:
按说 <mvc:annotation-driven/>会自动注册验证器的,你先手动加上看看。应该是localValidatorFactoryBean这个类,具体的自己搜索下。
加入
 <bean id="validator"
          class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
后报错 异常信息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Invocation of init method failed; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean] for bean with name 'validator' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory
Related cause: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean] for bean with name 'validator' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory
localValidatorFactoryBean不是spring-context包里的么,为什么会去另一个包查,然后报找不到
  • 打赏
  • 举报
回复
按说 <mvc:annotation-driven/>会自动注册验证器的,你先手动加上看看。应该是localValidatorFactoryBean这个类,具体的自己搜索下。
smallblood 2015-03-05
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
@Validated 改为@Valid看下
我试过@Valid ,一样errors是0,而且我也不知道这种注解方式的怎么执行的,找不到源方法,也没法看到底是验证出问题了,还是压根就没去验证
  • 打赏
  • 举报
回复
@Validated 改为@Valid看下
内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程中的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文中详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题中的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化中的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。
内容概要:本文围绕多旋翼无人机姿态估计算法的开发与性能评估展开系统性研究,重点对比了线性与非线性滤波算法在复杂飞行环境下的表现。通过构建基于扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)等先进算法的姿态估计器,融合IMU、磁力计、视觉传感器等多源数据,有效提升了姿态解算的精度与鲁棒性。研究涵盖了静态悬停、高速机动及磁干扰等多种典型飞行场景,利用MATLAB/Simulink平台完成仿真实验,并结合实测飞行数据与VICON高精度运动捕捉系统提供的真值进行定量分析。结果表明,非线性滤波器在动态工况下具有显著优势,尤其在抑制漂移和抵抗外部干扰方面优于传统线性方法。文章还提出了传感器融合、自适应建模、冗余配置等一系列降低偏差影响的技术路径,为高可靠性无人机导航系统的设计提供了理论依据与实践指导。; 适合人群:具备控制理论、信号处理及状态估计基础知识,从事无人机导航、控制算法研发或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于开发高精度无人机姿态解算模块;②为多传感器融合算法的设计、实现与验证提供参考案例;③服务于复杂环境下无人系统状态估计的教学演示与科研攻关; 阅读建议:建议结合文中所述MATLAB/Simulink仿真模型与实测数据集进行复现与调试,重点关注EKF与UKF的数学推导、实现细节及关键参数调优过程,深入理解非线性系统建模、状态估计与工程实际之间的平衡与折衷。

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧