JasperException when processing JSP page: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
When trying to access the admin.jsp page, the following error occurs:
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/admin.jsp at line 11
8: <form:form method="post">
9:
10: Infotext<br />
11: <form:input path="infoBody"/><br /><br />
12: <br /><br />
13:
14: <input type="submit" value="Submit">
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:422)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160)
org.springframe开发者_开发问答work.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:122)
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:408)
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
org.apache.jsp.WEB_002dINF.jsp.admin_jsp._jspx_meth_form_005finput_005f0(admin_jsp.java:143)
org.apache.jsp.WEB_002dINF.jsp.admin_jsp._jspx_meth_form_005fform_005f0(admin_jsp.java:104)
org.apache.jsp.WEB_002dINF.jsp.admin_jsp._jspService(admin_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
InfoText.java:
package se.hsr.models;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class InfoText implements Serializable{
private int id;
private String infoBody;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getInfoBody() {
return infoBody;
}
public void setInfoBody(String infoBody) {
this.infoBody = infoBody;
}
}
InfoTextFormController.java:
package se.hsr.controllers;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import se.hsr.models.InfoText;
@Controller
public class InfoTextFormController extends SimpleFormController{
@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception {
InfoText infoText = new InfoText();
return infoText;
}
@RequestMapping("/admin")
public ModelAndView onSubmit(Object command) throws ServletException {
InfoText infoText = (InfoText) command;
InfoTextController infoTextController = new InfoTextController();
boolean infoTextSaved = infoTextController.saveInfoText(infoText);
if (infoTextSaved)
{
return new ModelAndView("admin");
}
else
{
return new ModelAndView("admin");
}
}
}
admin.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<body>
<h1>Adminpage</h1>
<form:form method="post">
Infotext<br />
<form:input path="infoBody"/><br /><br />
<br /><br />
<input type="submit" value="Submit">
</form:form>
</body>
</html>
What is it that I'm missing? Have gotten a login-form using the exact same technique to work with no problems, so this error really befuddles me. Thanks in advance for any help.
You are mixing two different approaches to create controllers: new annotated controllers (@Controller
/@RequestMapping
) and old SimpleFormController
.
With annotated approach, you controller should look like this:
@Controller
public class InfoTextFormController {
@RequestMapping(value = "/admin", method = RequestMethod.GET)
public ModelAndView createForm() throws Exception {
return new ModelAndView("admin", "command", new InfoText());
}
@RequestMapping(value = "/admin", method = RequestMethod.POST)
public ModelAndView onSubmit(@ModelAttribute("command") InfoText infoText) {
...
}
}
精彩评论