ModelAttribute
我有一个对象,我使用命名绑定到视图SurveyDetail
。在该对象中,我有 2 个名为id
和的属性surveyYear
。为了访问POST
方法中的值,我为每个属性设置了一个隐藏字段。SurveyYear 值在控制器中正确返回,但 id 返回 null。它们都是surveyDetail的一部分,我不明白为什么它正确绑定到surveyYear而不是id?不会抛出任何错误,并且在初始GET
时它在 id 字段中具有正确的值,但是一旦它到达POST
id 值就会返回 null。此外,当我执行 request.getParameter("id") 时,会返回正确的值,但如果我尝试引用绑定路径,它会返回 nullsurveyDetail.getId
. 请帮助我无法弄清楚我做错了什么。页面上的其他任何地方都不存在 id 字段,null 可能来自哪里?
控制器Post
方法:
@RequestMapping(method=RequestMethod.POST)
public String submit(@ModelAttribute(WebConstants.SURVEY_DETAIL) SurveyDetail surveyDetail, BindingResult result, HttpServletRequest request, HttpServletResponse response) throws IOException
{
if (LOGGER.isDebugEnabled())
LOGGER.debug(surveyDetail.getId() + " Year : " + surveyDetail.getSurveyYear());
if (LOGGER.isDebugEnabled())
LOGGER.debug("REQUEST PARAMETER: " + request.getParameter("id"));
return WebConstants.SELECT_STATES_VIEW_REDIRECT;
}
JSP表格:
<sf:form method="POST" name="form1" id="form1" modelAttribute="surveyDetail">
<table width="100%" border="0" cellpadding="0" cellspacing="0" id="workTable-full">
<tr>
<td colspan="4">
<sf:input type="hidden" path="surveyYear" id="year" cssClass="inputbox-survey" maxlength="100" size="10" />
<sf:input type="hidden" path="id" id="id" cssClass="inputbox-survey" maxlength="100" size="10" />
</td>
</tr>
<tr>
<td colspan="4"><input type="submit" class="small-short inner2" value="Enter Data" alt="Enter Data" title="Enter Data" id="cr8StateTable" name="cr8StateTable"/> <strong>- Click this button to start entering individual State data</strong>
</td>
</tr>
</table>