@ModelAttribute注解和SpringMVC表单modelAttribute属性
2016-04-07 00:00
435 查看
摘要: @ModelAttribute注解,SpringMVC表单modelAttribute属性,@SessionAttribute注解异常。
@ModelAttribute注解
1.没有添加@ModelAttribute修饰的方法,在目标方法的参数对实体进行入参,该实体默认会从ModelMap中获取,如果不存在则创建新的对象作为入参参数。在进行数据绑定的时候(doBinder()方法),会将该实体放入到ModelMap中。
2.添加@ModelAttribute修饰的方法,在每个目标方法调用前都会执行该方法。
一般情况下,在form表单修改的时,某项字段规定为不可更改,就需要使用该注解标注的方法,根据id的获取与否,来从数据库中获取对应的实体,然后存放到ModelMap中。
SpringMVC表单ModelAttribute属性
使用SpringMVC表单标签,必须要在request中有一个和表单对应的bean。默认request的键为command。可以通过修改form标签的modelAttribute属性修改键的值。
@SessionAttribute注解和@ModelAttribute注解冲突:
没有使用@ModelAttribute修饰的方法,且在某个目标方法入参使用了@SessionAttribute注解value同名的实体对象,会抛出异常。
原因:
解决办法:
1.@SesionAttribute和方法入参处使用不同名的value值
2.添加@ModelAttribute修饰的方法,方法内将实体放入ModelMap中。
@ModelAttribute注解
1.没有添加@ModelAttribute修饰的方法,在目标方法的参数对实体进行入参,该实体默认会从ModelMap中获取,如果不存在则创建新的对象作为入参参数。在进行数据绑定的时候(doBinder()方法),会将该实体放入到ModelMap中。
2.添加@ModelAttribute修饰的方法,在每个目标方法调用前都会执行该方法。
一般情况下,在form表单修改的时,某项字段规定为不可更改,就需要使用该注解标注的方法,根据id的获取与否,来从数据库中获取对应的实体,然后存放到ModelMap中。
SpringMVC表单ModelAttribute属性
使用SpringMVC表单标签,必须要在request中有一个和表单对应的bean。默认request的键为command。可以通过修改form标签的modelAttribute属性修改键的值。
@SessionAttribute注解和@ModelAttribute注解冲突:
没有使用@ModelAttribute修饰的方法,且在某个目标方法入参使用了@SessionAttribute注解value同名的实体对象,会抛出异常。
原因:
if (implicitModel.containsKey(name)) { bindObject = implicitModel.get(name); } else if (this.methodResolver.isSessionAttribute(name, paramType)) { bindObject = this.sessionAttributeStore.retrieveAttribute(webRequest, name); if (bindObject == null) { raiseSessionRequiredException("Session attribute '" + name + "' required - not found in session"); } }在绑定参数前,此时Model中没有值,然后会进入另一个分支,就会抛出异常。
解决办法:
1.@SesionAttribute和方法入参处使用不同名的value值
2.添加@ModelAttribute修饰的方法,方法内将实体放入ModelMap中。
相关文章推荐
- 04-SpringMVC-springmvc输出数据模型
- Spring @SessionAttributes @ModelAttribute
- Spring 如何处理Controller
- @ModelAttribute运用详解
- SpringMVC中@ModelAttribute和@SessionAttributes注解的使用
- Spring @ModelAttribute注解用法
- SpringMVC注解@SessionAttributes和@ModelAttribute组合使用问题
- spring mvc @ModelAttribute注解应用分析
- Spring MVC @ModelAttribute 详解
- spring mvc中注解@ModelAttribute的妙用分享
- spring学习教程之@ModelAttribute注解运用详解
- springmvc后台基于@ModelAttribute获取表单提交的数据
- Spring boot @ModelAttribute标注的实现
- 使用spring aop实现业务层mysql 读写分离
- springmvc 国际化
- Java生成实体
- day27-struts2---day02( 类型转换,数据校验,国际化,拦截器)
- struts2整合json要注意的问题
- Java equals方法
- LR接口测试---Java Vuser之jdbc查询(调试前)