2015-02-27 2 views
1

Ни BindingResult, ни обычный целевой объект для имени компонента «команды» доступен в качестве атрибута запросаКак читать данные формы весной?

это мой index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 

<!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 action="loginform" method="post"> 
    <form:input type="text" path="name" id="userName" /> 
    <form:input type="password" path="pass" id="password" /> 
    <form:button value="submit"></form:button> 
</form:form> 

</body> 
</html> 

это мой Bean

package com.ews.usman.controller; 

public class loginBean { 

private String name; 
private String pass; 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getPass() { 
    return pass; 
} 
public void setPass(String pass) { 
    this.pass = pass; 
} 

} 

это мой контроллер

package com.ews.usman.controller; 
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; 
@Controller 
public class LoginFormController { 

@RequestMapping(value="/loginform", method=RequestMethod.POST) 
public ModelAndView formReader(@ModelAttribute("loginBean") loginBean 
loginbean, BindingResult result){ 
    ModelAndView model = new ModelAndView(); 
    model.addObject("name", loginbean.getName()); 
    model.addObject("pass", loginbean.getPass()); 
    model.setViewName("result"); 
    return model; 
} 


} 

это мой сервлет-cont ext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd"> 

<!-- DispatcherServlet Context: defines this servlet's request-processing 
infrastructure --> 

<!-- Enables the Spring MVC @Controller programming model --> 
<annotation-driven /> 

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up 
static resources in the ${webappRoot}/resources directory --> 
<resources mapping="/resources/**" location="/resources/" /> 

<!-- Resolves views selected for rendering by @Controllers to .jsp resources 
in the /WEB-INF/views directory --> 
<beans:bean 
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <beans:property name="prefix" value="/WEB-INF/views/" /> 
    <beans:property name="suffix" value=".jsp" /> 
</beans:bean> 

<context:component-scan base-package="com.ews.usman" /> 

<bean name="/loginform" 
class="com.ews.usman.controller.LoginFormController"></bean> 

</beans:beans> 

это моя web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 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_2_5.xsd"> 

<!-- The definition of the Root Spring Container shared by all Servlets and 
Filters --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring/root-context.xml</param-value> 
</context-param> 

<!-- Creates the Spring Container shared by all Servlets and Filters --> 
<listener> 
    <listener- 
class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- Processes application requests --> 
<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet- 
class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param- 
value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list>` 

ответ

1

Вы должны добавить modelAttribute с собственным именем в вашей форме, в противном случае подкладочный имя боб форма будет по умолчанию «команды ', поэтому вы получите свою ошибку

<form:form action="loginform" modelAttribute="loginBean" method="post"> 
Смежные вопросы