2014-01-16 1 views
0

я пытаюсь использовать проверки пружины с помощью annotation.But, когда я запустить приложение, оно дает следующие exception-java.lang.IllegalStateException: Ни BindingResult, ни обычный целевой объект для имени боба «logpo» доступен как атрибут запроса

org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [jsp] in context with path [/SpringTest] threw 
exception [java.lang.IllegalStateException: Neither BindingResult nor plain target  
object for bean name 'logpo' available as request attribute] with root cause 
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean  
name 'logpo' available as request attribute 
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141) 
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) 
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) 
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160) 
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147) 
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138) 
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:122) 
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:408) 
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140) 
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) 
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 
at org.apache.jsp.index_jsp._jspx_meth_form_005finput_005f0(index_jsp.java:196) 
at org.apache.jsp.index_jsp._jspService(index_jsp.java:98) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

Я попытался, но не смог решить эту проблему. index.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"%> 
<!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>Login Page</title> 
</head> 
<body> 
<form:form action="login.do" commandName="logpo" method="GET"> 
Enter name : 
<form:input path="uname" /> 
<form:errors path="uname" /><br> 
Enter pass : 
< form:input path="password"/> 
<form:errors path="password"/> 
<input type="submit" value="In" /> 
</form:form> 
</body> 
</html> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" 
version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" > 

<display-name>SpringTest</display-name> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener- 
class> 
</listener> 

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 


<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>/WEB-INF/resources/log4j.properties</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 

</web-app> 

dispacher-servel.xml

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

<mvc:annotation-driven/> 

<!-- Dispacher --> 
<bean 
    id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" > 
    <property 
     name="prefix" 
     value="" /> 

    <property 
     name="suffix" 
     value=".jsp" /> 
</bean> 

<bean class="org.springframework.context.support.ResourceBundleMessageSource" 
    id="messageSource"> 
    <property name="basename" value="messages" /> 
</bean> 



</beans> 

и контроллер LoginController.java

package com.controller; 

import java.util.Iterator; 
import java.util.List; 
import javax.servlet.http.HttpServletRequest; 
import javax.validation.Valid; 

import org.apache.log4j.Logger; 
import org.hibernate.Query; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.springframework.stereotype.Controller; 
import org.springframework.validation.BindingResult; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 

import com.util.HibernateUtil; 
import com.util.LoginPojo; 

@Controller 
public class LoginController { 
private static final Logger logger = Logger 
     .getLogger(LoginController.class); 
private LoginPojo llogin; 

@RequestMapping(value = "/login", method = RequestMethod.GET) 
public ModelAndView loginAuth(@Valid LoginPojo logpo ,BindingResult  
    br,HttpServletRequest req,ModelAndView mav) { 
    logger.info("loginAuth method"); 
    //ModelAndView mav = new ModelAndView(); 
    if(br.hasErrors()){ 
     mav.setViewName("index"); 
    }else{ 
        mav.setViewName("success"); 
    } 

и я добавил всю необходимую банку ,

ответ

0

Похоже, вы вызываете index.jsp напрямую, не пропуская контроллер Spring, который инициализирует bean-компонент logpo и устанавливает его в модели.

Не делайте этого. Всегда проходите через контроллер. В представлении нужен фасоль logpo, который должен быть создан контроллером.

+0

Каким должен быть правильный способ сделать это? –

+0

Позволяя Spring создать экземпляр экземпляра и добавив его в модель, как и в методе loginAuth, или выполнив 'modelAndView.addObject (« logpo », новый LoginPojo()). –

+0

Я изменил, но все еще получаю проблемы ... –

Смежные вопросы

 Смежные вопросы