1

ModelAttribute我有一个对象,我使用命名绑定到视图SurveyDetail。在该对象中,我有 2 个名为id和的属性surveyYear。为了访问POST方法中的值,我为每个属性设置了一个隐藏字段。SurveyYear 值在控制器中正确返回,但 id 返回 null。它们都是surveyDetail的一部分,我不明白为什么它正确绑定到surveyYear而不是id?不会抛出任何错误,并且在初始GET时它在 id 字段中具有正确的值,但是一旦它到达POSTid 值就会返回 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">&nbsp;
                <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>              

4

0 回答 0