spring mvc 验证框架要么不起作用,要么报错 error creating bean 'org.springframework.validation.beanvalidation

在一台电脑运行好好的,但是到另一台电脑上运行,一直报错Error creating bean 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0'

搜半天资料,可能是版本导致的问题。

把问题机器的spring版本从4.1改为3.1,运行正常。问题机使用的myeclipse 2016+spring4.1,正常机器是eclipse10+spring3.1

另外,项目引用了validation、hibernate-validator的包,也可能是spring的版本与这几个包的版本不匹配造成。

<body>
      <sf:form modelAttribute="user" method="POST">
        username:<sf:input path="username" /><sf:errors path="username" /> <br>
        userpass:<sf:input path="userpass" /><sf:errors path="userpass" /> <br>
        nickname:<sf:input path="nickname" /><br>
        email:<sf:input path="email" /><sf:errors path="email" /><br>
        <input type="submit" value="保存用户" />
    </sf:form>
  </body>

 

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

public class User {
    @NotEmpty(message="用户名不能为空")
    private String username;
    
    @Length(min=6,message="密码不低于6位")
    private String userpass;
    
    private String nickname;
    
    @Email(message="邮箱格式不正确")
    private String email;

 

    @RequestMapping(value="/add",method=RequestMethod.POST)
    public String add(@Validated User user,BindingResult br,Model model){
        //System.out.println("xxxxxxxxxxxxxxxxxx........................"+user.getUsername() +"," +user.getNickname());
        log.info("user add:"+user.getUsername() +"," +user.getNickname());
        if(br.hasErrors()){
            return "user/add";
        }
        users.put(user.getUsername(),user);
        model.addAttribute("user",user);
        return "redirect:list";  //演示1:客户端跳转,add 与list action同级。
    }
    

 

 

 

附:另一个解决方案,没用maven,所以没试。

Error creating bean 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0'

2017年04月01日 10:50:45 淡然游江湖 阅读数:7755

SPRING版本:4.3.4.RELEASE

SpringMvc版本:4.3.4.RELEASE

Dubbo版本:2.8.4

增加mvc注解<mvc:annotation-driven />直接报错

 

 
  1. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.apache.bval.jsr303.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;

  2. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)

  3. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)

  4. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)

  5. at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值