我正在自学Spring Form标签,并且遇到了一个我无法解决的简单错误。当我在浏览器中启动此应用程序时出现以下错误:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'index' available as request attribute
我已尝试过在Google搜索中出现的大多数修补程序无济于事。有人可以找到我出错的地方吗?以下是相关组件。非常感谢。
控制器:
@Controller
@RequestMapping("/registration")
public class LoginController {
@RequestMapping(method = RequestMethod.GET)
public String setupForm(ModelMap model) {
Registration registration = new Registration();
model.addAttribute("registration", registration);
return "index";
}
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("registration") Registration registration, Map model) {
return "success";
}
}
JSP(/index.jsp):
<form:form commandName="index">
<table border="0" cellspacing="12">
<tr>
<td>
<form:input path="email"/>
</td>
</tr>
<tr>
<td>
<form:password path="password"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Submit"/>
</td>
</tr>
</table>
</form:form>
命令对象(Registration.java):
public class Registration {
private String password;
private String email;
// getters,setters
答案 0 :(得分:1)
几天前面对同样的问题,我从命中和跟踪中理解的是,索引页面是一个静态页面,并且在渲染之前不会进行任何处理。如果我想在索引页面中使用表单模型绑定,我应该有一个控制器的处理程序方法,它将创建一个Registration对象,并在呈现index.jsp之前将它放在ModelAndView中
在控制器中添加一个方法,如下所示,然后尝试
@RequestMapping(method = RequestMethod.GET, value="/")
public ModelAndView initiate(){
ModelAndView objModView = new ModelAndView("/index.jsp");
objModView.addObject("registration",new Registration());
return objModView;
}
答案 1 :(得分:0)
在索引页面中更正以下内容并尝试
<form:form commandName="index">
至<form:form commandName="registration">
如果上述方法不起作用,您也可以这样做
<form:form modelAttribute="registration" commandName="registration">
由于
答案 2 :(得分:0)
看到的错误是因为当您提交表单时,您必须具有与@ModelAttribute注释关联的绑定结果。
尝试将代码更改为:
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("registration") Registration registration, BindingResult result, Map model){
return "success";
}
另请注意,应在“模型属性”之后立即执行“绑定结果”对象。
如果您使用两个@ModelAttributes,那么每个@ModelAttributes都应该有自己的绑定结果对象。
请参阅弹簧源指南以获取所有相关文档
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html