我试图在Tomcat 8.0服务器上使用Spring框架开发一个网络应用程序,但是,我被这个错误卡住了。其他两个表单页能够通过使用ModelAtinn绑定表单中的数据,然而,第三个userprofile.jsp是抛出错误“BindingResult或bean名称'setupuser'的普通目标对象都不可用作请求属性”。请帮我改掉这个错误。谢啦
错误-
Jan 18, 2016 4:32:12 PM org.springframework.web.servlet.tags.form.InputTag doStartTag
SEVERE: Neither BindingResult nor plain target object for bean name 'setupuser' available as request attribute
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'setupuser' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:179)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:199)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:165)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:152)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:143)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:127)
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421)
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:103)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
at org.apache.jsp.WEB_002dINF.views.userprofile_jsp._jspx_meth_form_005finput_005f0(userprofile_jsp.java:386)
at org.apache.jsp.WEB_002dINF.views.userprofile_jsp._jspService(userprofile_jsp.java:168)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:719)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:465)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:390)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:317)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1201)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:986)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Jan 18, 2016 4:32:12 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'setupuser' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:179)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:199)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:165)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:152)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:143)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:127)
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421)
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:103)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
at org.apache.jsp.WEB_002dINF.views.userprofile_jsp._jspx_meth_form_005finput_005f0(userprofile_jsp.java:386)
at org.apache.jsp.WEB_002dINF.views.userprofile_jsp._jspService(userprofile_jsp.java:168)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:719)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:465)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:390)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:317)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1201)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:986)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Jan 18, 2016 4:32:12 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [onlineEnrollment] in context with path [/onlineEnrollment] threw exception [An exception occurred processing JSP page /WEB-INF/views/userprofile.jsp at line 17
14: <b>Setup your contact information:</b> <br />
15:
16: <form:form method="POST" modelAttribute="setupuser">
17: EMAIL ADDRESS: <form:input path="email" /> <br />
18: <form:errors path="email" cssStyle="" cssClass="color:red;" /><br />
19: CONFIRM EMAIL ADDRESS: <form:input path="confirmEmail" /> <br />
20: <form:errors path="confirmEmail" cssClass="color:red;" /><br /><br />
Stacktrace:] with root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'setupuser' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:179)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:199)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:165)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:152)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:143)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:127)
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421)
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:103)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
at org.apache.jsp.WEB_002dINF.views.userprofile_jsp._jspx_meth_form_005finput_005f0(userprofile_jsp.java:386)
at org.apache.jsp.WEB_002dINF.views.userprofile_jsp._jspService(userprofile_jsp.java:168)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:719)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:465)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:390)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:317)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1201)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:986)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
可选服务控制器。爪哇-
package com.banking.onlineenrollment.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.banking.onlineenrollment.service.UserService;
import com.banking.onlineenrollment.user.UserAgreementForm;
@Controller
@RequestMapping(value = "/optional.do")
public class OptionalServicesController {
private UserService userService;
@Autowired
public OptionalServicesController(UserService userService) {
// TODO Auto-generated constructor stub
this.userService = userService;
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView displayOptionalServices() {
ModelAndView mv = new ModelAndView("optionalservices");
UserAgreementForm userAgreementForm = new UserAgreementForm();
mv.addObject("optionalservices", userAgreementForm);
return mv;
}
@RequestMapping(method = RequestMethod.POST)
public ModelAndView processOptionalServices(@ModelAttribute("optionalservices") UserAgreementForm userAgreementForm) {
ModelAndView mv = new ModelAndView();
userService.saveOptionalServices(userAgreementForm.getEnrollServices(), userAgreementForm.getVerifyServices());
mv.setViewName("userprofile");
return mv;
}
}
用户配置文件。jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>Setup User Profile</title>
</head>
<body>
<h3>4.Setup User Profile</h3>
The following is required to complete your user profile.<br /><c:out value="${message}"></c:out><br /><br />
<b>Setup your contact information:</b> <br />
<form:form method="POST" modelAttribute="setupuser">
EMAIL ADDRESS: <form:input path="email" /> <br />
<form:errors path="email" cssStyle="" cssClass="color:red;" /><br />
CONFIRM EMAIL ADDRESS: <form:input path="confirmEmail" /> <br />
<form:errors path="confirmEmail" cssClass="color:red;" /><br /><br />
<b>Setup your username and password:</b><br />
USERNAME: <form:input path="username" /> <br />
<form:errors path="username" cssClass="color:red;" /><br />
PASSWORD: <form:password path="password" /> <br />
<form:errors path="password" cssClass="color:red;" /><br />
CONFIRM PASSWORD: <form:password path="confirmPassword" /> <br />
<form:errors path="confirmPassword" cssClass="color:red;" /><br />
<input type="submit" value="Continue"> <br /><br />
Password Complexity Requirements
Your password cannot contain your username.
Your password must be a minimum of 8 characters and must
meet at least 3 of the following 4 categories:
English uppercase characters (A - Z)
English lowercase characters (a - z)
Numeric digits (0 - 9)
Non-alphanumeric (For example: !, $, #, or %)
Passwords are case sensitive. For added security we
recommend that you change your password every 90 days.
</form:form>
</body>
</html>
UserProfileController.java
/**
*
*/
package com.banking.onlineenrollment.controller;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.banking.onlineenrollment.service.UserService;
import com.banking.onlineenrollment.user.UserProfileForm;
/**
* @author Harsh
*
*/
@Controller
@RequestMapping(value = "/userprofile.do")
public class UserProfileController {
private UserService userService;
@Autowired
public UserProfileController(UserService userService) {
// TODO Auto-generated constructor stub
this.userService = userService;
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView displayUserProfile() {
ModelAndView mv = new ModelAndView("userprofile");
UserProfileForm userProfileForm = new UserProfileForm();
mv.addObject("setupuser", userProfileForm);
return mv;
}
@RequestMapping(method = RequestMethod.POST)
public ModelAndView processUserProfile(@Valid @ModelAttribute("setupuser") UserProfileForm userProfileForm, BindingResult result) {
System.out.println("Inside POST method beginning of userprofile");
ModelAndView mv = new ModelAndView();
if(result.hasErrors()) {
mv.setViewName("userprofile");
mv.addObject("message", "Don't leave the form blank");
}
else {
userService.saveUserProfile(userProfileForm.getEmail(),userProfileForm.getConfirmEmail(),userProfileForm.getUsername(),userProfileForm.getPassword(), userProfileForm.getConfirmPassword());
mv.setViewName("securityprofile");
}
return mv;
}
}
用户服务。JAVA
package com.banking.onlineenrollment.service;
/**
* @author Harsh
*
*/
public interface UserService {
public int isValid(String idType, int idNum, String token);
public void saveOptionalServices(int enrollServices, int verifyServices);
public void saveUserProfile(String email, String confirmEmail, String username, String password, String confirmPassword);
public void saveSecurityProfile(int q1, String a1, int q2, String a2,
int q3, String a3, int q4, String a4 );
}
用户协议Form.java
package com.banking.onlineenrollment.user;
import org.springframework.stereotype.Component;
@Component
public class UserAgreementForm {
private int enrollServices;
private int verifyServices;
public int getEnrollServices() {
return enrollServices;
}
public void setEnrollServices(int enrollServices) {
this.enrollServices = enrollServices;
}
public int getVerifyServices() {
return verifyServices;
}
public void setVerifyServices(int verifyServices) {
this.verifyServices = verifyServices;
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>onlineEnrollment</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>onlineEnrollment</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>onlineEnrollment</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
UserProfileForm
/**
*
*/
package com.banking.onlineenrollment.user;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import org.springframework.stereotype.Component;
/**
* @author Harsh
*
*/
@Component
public class UserProfileForm {
@NotBlank
@Size(min = 5, max = 20)
@Email
private String email;
@NotBlank
@Size(min = 5, max = 20)
@Email
private String confirmEmail;
@NotBlank
@Size(min = 5, max = 20)
private String username;
@NotBlank
private String password;
@NotBlank
private String confirmPassword;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getConfirmEmail() {
return confirmEmail;
}
public void setConfirmEmail(String confirmEmail) {
this.confirmEmail = confirmEmail;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getConfirmPassword() {
return confirmPassword;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
}
您可以尝试在函数级别而不是类级别上注释请求映射:
但首先要加上
<mvc:annotation-driven />
到你的onlineEnrollment-servlet.xml
还有xmlns:mvc=”http://www.springframework.org/schema/mvc“
在顶部
现在尝试更改控制器方法(只需完全复制到您的代码)到:
package com.banking.onlineenrollment.controller;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.banking.onlineenrollment.service.UserService;
import com.banking.onlineenrollment.user.UserProfileForm;
/**
* @author Harsh
*
*/
@Controller
// @RequestMapping(value = "/userprofile.do")
public class UserProfileController {
private UserService userService;
@Autowired
public UserProfileController(UserService userService) {
// TODO Auto-generated constructor stub
this.userService = userService;
}
@RequestMapping(value="/askform.do",method = RequestMethod.GET)
public ModelAndView displayUserProfile() {
ModelAndView mv = new ModelAndView("userprofile");
UserProfileForm userProfileForm = new UserProfileForm();
mv.addObject("setupuser", userProfileForm);
return mv;
}
@RequestMapping(value="/populateformfield.do",method = RequestMethod.POST)
public ModelAndView processUserProfile(@Valid @ModelAttribute("setupuser") UserProfileForm userProfileForm, BindingResult result) {
System.out.println("Inside POST method beginning of userprofile");
ModelAndView mv = new ModelAndView();
if(result.hasErrors()) {
mv.setViewName("userprofile");
mv.addObject("message", "Don't leave the form blank");
}
else {
userService.saveUserProfile(userProfileForm.getEmail(),userProfileForm.getConfirmEmail(),userProfileForm.getUsername(),userProfileForm.getPassword(), userProfileForm.getConfirmPassword());
mv.setViewName("securityprofile");
}
return mv;
}
}
现在将userProfile.jsp更改为:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>Setup User Profile</title>
</head>
<body>
<h3>4.Setup User Profile</h3>
The following is required to complete your user profile.<br /><c:out value="${message}"></c:out><br /><br />
<b>Setup your contact information:</b> <br />
<form:form method="POST" modelAttribute="setupuser" action="populateformfield.do">
EMAIL ADDRESS: <form:input path="email" /> <br />
<form:errors path="email" cssStyle="" cssClass="color:red;" /><br />
CONFIRM EMAIL ADDRESS: <form:input path="confirmEmail" /> <br />
<form:errors path="confirmEmail" cssClass="color:red;" /><br /><br />
<b>Setup your username and password:</b><br />
USERNAME: <form:input path="username" /> <br />
<form:errors path="username" cssClass="color:red;" /><br />
PASSWORD: <form:password path="password" /> <br />
<form:errors path="password" cssClass="color:red;" /><br />
CONFIRM PASSWORD: <form:password path="confirmPassword" /> <br />
<form:errors path="confirmPassword" cssClass="color:red;" /><br />
<input type="submit" value="Continue"> <br /><br />
Password Complexity Requirements
Your password cannot contain your username.
Your password must be a minimum of 8 characters and must
meet at least 3 of the following 4 categories:
English uppercase characters (A - Z)
English lowercase characters (a - z)
Numeric digits (0 - 9)
Non-alphanumeric (For example: !, $, #, or %)
Passwords are case sensitive. For added security we
recommend that you change your password every 90 days.
</form:form>
</body>
</html>
现在请求带有
askform.do
的表单
我正在努力学习SpringMVC,我面临着一个在我看来很常见的问题。我的你好。jsp是: 控制器为: 用户域名是: 代码很简单,但我面临的错误是: SEVERE: Servlet.service()对于servlet[jsp]在路径[/ChatBooster]的上下文中抛出异常[java.lang.IllegalStateExcture: BindingResult和普通目标对象的bean名称'u
“bean名称'login command'的BindingResult和普通目标对象都不能作为请求属性使用” 这是我新项目的第一个控制器,我在处理xml时遇到了一些问题。我想那都解决了,但如果什么都没看到,我想问题可能就在那里。奇怪的是,所有这些代码几乎都是直接从我的另一个项目复制的,而且它工作得很好。 而且,如果这一点重要的话,我正在运行glassfish。提前道谢! 编辑:网页是/moren
嘿,我是从Spring开始的,但是我发现了这个异常并且无法解决它这是我的jsp 这是我的控制器 这是个例外
当我只留下表显示可用的比萨饼与链接“删除”,一切显示正常,删除也正常工作。 我想表单和控制器@modelAttribute有问题,但我找不到确切的问题,我在controller中添加了与表单相同的属性--“mypiza”,这应该可以工作(至少从我在Google上找到的东西来看)。 有人能告诉我们是什么阻碍了这个应用程序的工作,以及如何解决这个问题吗?如果需要其他配置文件,我可以提供它们。
我一直试图提交一个html表单到spring boot,但无法使其工作。 我的pom.xml中有这个 我的application.properties文件中有以下内容: 我还有一个名为index.html的类似html文件,位于 但代码似乎无法识别taglib,因为我在web页面中看到了以下内容: 注意taglib是如何不被识别的,只是打印在页面的顶部? Whitelabel错误页面此应用程序没有