我正嘗試使用spring mvc讀取從窗體輸入到另一個jsp頁面的值,但不使用註釋。雖然這樣做我得到這個錯誤: 無論BindingResult也不平原目標對象的bean名「用戶」可以作爲請求屬性 我的控制器類代碼如下:** BindingResult和bean名稱'user'的普通目標對象都沒有作爲請求屬性**
public class UserFormController extends SimpleFormController {
public UserFormController()
{
setCommandClass(User.class);
}
protected ModelAndView onSubmit(Object command) throws Exception {
User user = (User) command;
return new ModelAndView("userDetails", "user", user);
}
}
我的POJO的代碼是:
public class User {
String name;
String gender;
String[] subject;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String[] getSubject() {
return subject;
}
public void setSubject(String[] subject) {
this.subject = subject;
}
}
窗體的代碼是:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form:form method="POST" commandName="user" action="/abc.htm">
<table>
<tr>
<form:input path="name" />
</tr>
<tr>
<form:radiobutton label="M" value="male" path="gender"/>
<form:radiobutton label="F" value="female" path="gender"/>
</tr>
<tr>
<form:checkbox label="maths" value="maths" path="subject"/>
<form:checkbox label="english" value="english" path="subject"/>
</tr>
</table>
<input type="submit" value="submit">
</form:form>
</body>
</html>
我歡迎PAG e是redirect.jsp從我重定向到redirection.jsp並使用web.xml我將控件發送到名爲「disp」的servlet。對於 「DISP-servlet.xml文件」 的代碼是:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
<bean name="/redirection.htm"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="entry" />
</bean>
<bean name="/abc.htm" class="UserFormController"/>
</beans>
通過 'ParameterizableViewController的' 我試圖重定向到WEB-INF/jsp的文件夾中entry.jsp請求。然後我試圖在「userDetails.jsp」顯示詳細信息:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
user name:${user.name}
</tr>
<tr>
user gender:${user.gender}
</tr>
<tr>
user subjects:${user.subjects[0]},${user.subjects[1]}
</tr>
</table>
</body>
</html>
的錯誤我得到的是:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'user' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:175)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:195)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:161)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:148)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:139)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:123)
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:409)
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:91)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:78)
org.apache.jsp.WEB_002dINF.jsp.entry_jsp._jspx_meth_form_005finput_005f0(entry_jsp.java:184)
org.apache.jsp.WEB_002dINF.jsp.entry_jsp._jspx_meth_form_005fform_005f0(entry_jsp.java:125)
org.apache.jsp.WEB_002dINF.jsp.entry_jsp._jspService(entry_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:239)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
即使有註解,我得到同樣的埃羅r – 2014-10-22 12:41:50
早些時候,我使用了「setCommandClass」,而不是使用註釋進行編碼時應該使用什麼? – 2014-10-22 12:58:15