2011-02-07 59 views
0

當試圖訪問admin.jsp頁,會出現以下錯誤:JasperException處理時JSP頁:既不BindingResult也不對bean名稱「命令」可作爲請求屬性純目標對象

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.springframework.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> 

什麼是我失蹤? 已經使用完全相同的技術獲得登錄表單而沒有任何問題,所以這個錯誤真的讓我困惑。預先感謝您的幫助。

回答

0

您正在混合兩種不同的方法來創建控制器:新註釋的控制器(@Controller/@RequestMapping)和舊的SimpleFormController

帶註釋的方法,你控制器應是這樣的:

@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) { 
     ... 
    }  
} 
相關問題