Spring MVC 4.1 ModelAndView构造函数运行不正常

时间:2014-11-09 06:03:38

标签: java jsp spring-mvc tomcat model

我有一个在Spring MVC 3.2中开发并在Tomcat 7中运行的Spring MVC项目,我刚刚将它迁移到Spring MVC 4.1和Tomcat 8以支持更新的业务需求。

由于我们有一些包重组,所以包括域对象层必须更改为其他包名称,例如从com.longz.ozssc.mac.generated.domain到com.longz.ozssc.mac.generated.domain.nb。在我更改了包之后,我发现我的spring表单提交不起作用,因为表单对象仍然链接到以前的域对象。

我尝试更新我的MVC控制器,通过以下代码将模型设置为更新的包对象:

 @RequestMapping("/newFirm")
 public ModelAndView newFirm(@ModelAttribute("firm") Firm firm, BindingResult result, Model model) throws Exception {

   ModelAndView mav = new ModelAndView("firm/editFirm.jsp","firm",new com.longz.ozssc.mac.generated.domain.nb.Firm());
   mav.addObject("newFlag", true);
   return mav;
 }

当我尝试从JSP中检索我的模型类时,

    <form:form action="${pageContext.request.contextPath}/saveFirm" method="POST" modelAttribute="firm">
    <% System.out.println("ModelAttribute = |" + pageContext.findAttribute("firm")+'|'); %>

JSP打印出来:

ModelAttribute = |com.longz.ozssc.mac.generated.domain.Firm[ firmAbn=null ]|

似乎当Tomcat 8服务器执行JSP编译时仍然引用我以前的Model Object,而不是引用我的新ModelAndView在我的控制器中定义。

这个问题会导致严重的结果,因为所有字段都是&#39; value(以spring形式)将绑定到错误的模型对象(com.longz.ozssc.mac.generated.domain.Firm),并且该对象不再可访问。

任何人都对这个问题有所了解请告知。

欣赏!

修改

有关模型集和POST过程的更多详细信息:

从JSP设置和检查。

 <form:form action="${pageContext.request.contextPath}/saveFirm" method="POST" modelAttribute="firm">
 <% System.out.println("ModelAttribute = |" + pageContext.findAttribute("firm")+'|'); %>

通过标准化的spring-dojo提交表单:

        <span class="inputbutton"><input class="savebutton" id="save" type="submit" value="<fmt:message key="navigation.save"/>"/></span>
        <script type="text/javascript">Spring.addDecoration(new Spring.ValidateAllDecoration({elementId:'save', event:'onclick'}));</script>

此代码在我的其他版本的Spring MVC3.2中运行。问题是表单绑定到错误的对象。

0 个答案:

没有答案