开发者

JasperException when processing JSP page: Neither BindingResult nor plain target object for bean name 'command' available as request attribute

开发者 https://www.devze.com 2023-02-08 19:01 出处:网络
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

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) {
        ...
    }       
}
0

精彩评论

暂无评论...
验证码 换一张
取 消