Spring的标签和验证等模块

使用了spring,真的可以简化很多开发,但前提是你懂spring技术,并且环境,架包没错。

今天编写了登录验证的模块,但是就是验证不了,不知道哪里出错了,但是也不好改错,这样还是很费时间的。

错误提示一直是form中的modelAttribute没有接受对象

Neither BindingResult nor plain target object for bean name 'user' available as request attribute

,但是我确实是将对象传递了过去。后来就各种找错误,可能有jar,Hibernate的架包缺失,也可能是控制器出错,也可能是配置文件出了问题,百度了很多页没问出来。看了书上的源码后加载测试。经过很多尝试,发现是modelAttribute的key和其对应的类名有对应关系。java中有些规范如:类名首字母大写,其对应得对象小写等,这是一种习惯,意识到其存在并且遵循,可以省去很多麻烦。

 @RequestMapping(value="/spring",method=RequestMethod.GET)
public String login(Model model) {
model.addAttribute(new SpringUser());
System.out.println("get 方法");
return "content01/spring";
}
@RequestMapping(value="/spring",method=RequestMethod.POST)
public String login(SpringUser user,Errors errors,Model model) {
uerValidator.validate(user, errors);
if(errors.hasErrors()) {
System.out.println("has errors");
return "content01/spring";
}
model.addAttribute(user);
return "content01/success01";
}

这段代码存在逻辑错误,所以编译不过。

还有就是<component-scan>扫描注册为bean的类,不要只扫描controller包,所以多写项目还是很有用的。

还有就是多个控制器的映射关系,有时候可能不会映射到我们希望的jsp上。

上一篇:BZOJ.1031.[JSOI2007]字符加密(后缀数组)


下一篇:editplus双击单词语法高亮显示设置