我使用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;
}
答案 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);
}