我使用Spring tiles框架来映射视图,每个页面都包含头文件(一个常见的JSP头页面)+ body(真实视图)。
tiles-definition.xml
如下所示:
<definition extends="defaultTemplate" name="dashboard">
<put-attribute name="header" value="/WEB-INF/jsp/home/mainPageHeader.jsp" />
<put-attribute name="body" value="/WEB-INF/jsp/home/dashboard.jsp" />
</definition>
到目前为止,mainPageHeader.jsp
是静态页面,但现在我想将一些bean绑定到此标题页面。但它没有用,我在我的dashboard
控制器中尝试如下:
ModelAndView model = new ModelAndView("dashboard");
model.addObject("dashboardBean", dashboardObj); // bean related to dashboard page
model.addObject("headerBean", headerObject); // new bean sending for header page.
return model;
但是当仪表板页面加载时,我可以看到异常:
Error 500: java.lang.IllegalStateException: Neither BindingResult nor plain target
object for bean name 'headerBean' available as request attribute.
我可以理解这个问题,我传递给模型的headerBean没有与视图关联。但是没有任何关于如何将bean与这个公共头页绑定的线索。
答案 0 :(得分:0)
尝试使用 addAttribute 而不是addObject
即
ModelAndView model = new ModelAndView("dashboard");
model.addAttribute("dashboardBean", dashboardObj); // bean related to dashboard page
model.addAttribute("headerBean", headerObject); // new bean sending for header page.
return model;