Spring MVC 3.1 - 模型属性丢失

时间:2013-01-03 16:17:32

标签: spring-mvc modelattribute

我对ModelAttributes的范围有一个快速的问题。

开发。环境:Spring MVC 3.1 / Java 6 / JSP w / JSTL for Views

在我的控制器中,我通过

为模型添加了一个属性
model.addAttribute(“appForResubmission”, appForResubmission);

在JSP中(响应GET请求而提供)我将其内容读作:

${appForResubmission.appId} 

- 工作正常,数据按预期显示在JSP上。

提交JSP后,在同一个控制器中以不同的方法(响应PUT请求),我尝试从模型中读取任何更改的属性,我这样做

@ModelAttribute(“appForResubmission”) Application app

在方法签名中。

但是,当我尝试查询对象的数据时,我得到的只是一个新的Application对象。 Spring的文档说明当模型中不存在请求的属性时,会发生这种新对象的实例化。

什么会导致属性丢失?有任何想法吗?我怀疑这是一个范围问题,但我不确定问题出在哪里。

非常感谢您提供的任何指示?

谢谢你, M. Reddy

1 个答案:

答案 0 :(得分:1)

modelattribute的范围是request,在内部它只相当于HttpSerletRequest.setAttribute("model", model)

如果您希望模型在不同的控制器中可用,您可能有两个选项,一个是根据您提交给控制器的内容或使用持久源来重建它。第二个选项是使用@SessionAttribute({'modelname'})将特定模型属性添加到会话中,但是请注意,您必须调用SessionStatus.complete以删除稍后添加到会话中的模型。