获取=> java.lang.IllegalStateException:BindingResult和bean名称'enumLanguage'的普通目标对象都不能作为请求属性使用

时间:2013-07-08 10:48:37

标签: spring spring-mvc spring-security

我使用Spring表单从客户端获取输入(如果我使用普通的html输入)。如果我使用Spring表单输入我得到错误:java.lang.IllegalStateException:BindingResult和bean名称'enumLanguage'的普通目标对象都不可用作请求属性

这是我的JSP:

 <form:form commandname="enumLanguage" action="${pageContext.request.contextPath}/enumLanguage/create.action" method="post" modelAttribute="enumLanguage" >                 
                <fieldset class="langStep">

                    <legend>Language Details</legend>

                    <table class="langpadding">
                        <tr>
                            <td><label>Name:</label></td>
                            <td><form:input path="name" cssClass="textbox2"></form:input></td>

                            <td><label class="llangpadding">Short Name:</label></td>
                            <td><form:input path="shortName" cssClass="textbox2"></form:input></td>
                        </tr>
                    </table> 
<a href="Javascript:enumLanguage.submit()" class="button left" title="Add" id="add">Save<span class="icon icon3"></span></a>
</form:form>

这是我的控制器:

@RequestMapping( value="/enumLanguage/create.action", method=RequestMethod.POST)
public ModelAndView create(@ModelAttribute EnumLanguage enumLanguage) throws Exception {    

    ModelAndView mvc = null;
    try{
        List<EnumLanguage> enumLanguages =  new ArrayList<EnumLanguage>();
        enumLanguages.add(enumLanguage);
        List<EnumLanguage> enumLanguagesList = enumLanguageService.create(enumLanguages);

        mvc =   new ModelAndView("setup/EnumLanguageList");

    } catch (Exception e) {

    }
    return mvc;
}

2 个答案:

答案 0 :(得分:0)

确保在渲染视图时将@ModelAttribute设置为模型

答案 1 :(得分:0)

确保您在视图中提供了一个带有键enumLanguage的模型属性,该键是表单命令名的值。

因此,返回包含您发布的表单的视图的控制器方法应如下所示。

@RequestMapping(value = "/language-details.do", method = RequestMethod.GET)
public ModelAndView initLanguageDetailsView() {

   ModelMap model = new ModelMap();

   EnumLanguage enumLang = new EnumLanguage();
   //setters blah blah
   //...

   //make it available to the view
   model.addAttribute("enumLanguage", enumLang);

   return new ModelAndView("language-details", model);
}