[英]Spring MVC Application Exception
我是Spring的新手,过去两天遇到了一些错误。 希望有人帮助和解决问题。 我也用谷歌搜索该错误,但无法理解该错误的根本原因。 我还没有在春季学习有关注释的内容,因此无法在线理解大多数示例。
java.lang.IllegalStateException
:既不BindingResult
也不对bean名称纯目标对象“login
”可作为请求属性
data.jsp :(这是一个视图页面,用于接受来自用户的数据)
<form:form commandName="login" method="POST" name="login">
Username:<form:input path="name"/>
<font color="red"><form:errors path="name"/></font><br/><br/>
<input type="submit" value="Login"/>
</form:form>
LoginFormController.java :(用于处理请求的控制器页面)
package Controller;
import model.Student;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class LoginFormController extends SimpleFormController {
public LoginFormController() {
//Initialize controller properties here or
//in the Web Application Context
setCommandClass(Student.class);
setCommandName("login");
setSuccessView("success");
setFormView("data");
}
@Override
protected ModelAndView onSubmit(Object command) throws Exception {
Student s1= (Student)command;
ModelAndView mv = new ModelAndView(getSuccessView());
mv.addObject("message", "Hello! "+s1.getName());
return mv;
}
}
Student.java:(java模型类)
package model;
public class Student {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student() {
}
public Student(String name) {
this.name = name;
}
}
dispatcher-servlet.xml :(xml文件描述)
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="index.htm">indexController</prop>
<prop key="data.htm">dataController</prop>
<prop key="/login.htm">loginDataController</prop>
</props>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
<bean name="dataController"
class="org.springframework.web.servlet.mvc.ParameterizableViewController"
p:viewName="data" />
<bean name="indexController"
class="org.springframework.web.servlet.mvc.ParameterizableViewController"
p:viewName="index" />
<bean name="Student" class="model.Student"/>
<bean id="loginDataController" class="Controller.LoginFormController"/>
谁能提供帮助找到解决方案?
<form:form commandName="login" method="POST" name="login">
spring的form标签的commandName属性是在其中公开表单对象的model属性的名称。默认为'command'。
资料来源: Spring Form TLD文件
现在回到您的情况:
“登录”应作为您未使用的模型属性(请求属性)可用,因此会导致您的错误。
因此,将您的onSubmit
方法修改为
@Override
protected ModelAndView onSubmit(Object command) throws Exception {
Student s1= (Student)command;
ModelAndView mv = new ModelAndView(getSuccessView());
mv.addObject("login",s1);
mv.addObject("message", "Hello! "+s1.getName());
return mv;
}
我还建议您以Spring形式阅读此Java Dzone教程 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.