0

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

开发。环境:Spring MVC 3.1/Java 6/JSP w/JSTL 用于视图

在我的控制器中,我通过

model.addAttribute(“appForResubmission”, appForResubmission);

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

${appForResubmission.appId} 

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

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

@ModelAttribute(“appForResubmission”) Application app

在方法签名中。

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

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

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

谢谢你,雷迪先生

4

1 回答 1

1

a 的范围modelattributerequest,在内部它只是等价于HttpSerletRequest.setAttribute("model", model)

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

于 2013-01-03T16:28:24.233 回答