2012-12-03 3 views
0

데이터베이스에 이벤트 목록이 저장되어 있지만 검색 할 때 결과가 있더라도 fat null 포인터 예외가 발생합니다. 여기 데이터베이스에서 데이터를 수신 할 때 널 포인터 예외 수신

여기
@Transactional 
public class EventServices { 
    // So Spring can inject the session factory 
    SessionFactory sessionFactory; 
    public void setSessionFactory(SessionFactory value) { 
     sessionFactory = value; 
    } 

    // Shortcut for sessionFactory.getCurrentSession() 
    public Session sess() { 
     return sessionFactory.getCurrentSession(); 
    } 

    @SuppressWarnings("unchecked") 
    public List<Event> getEvents() { 
     return sess().createQuery("from Event").list(); 
    } 
} 

내 ActionSupport를 클래스

public class EventAction extends ActionSupport { 

    protected EventServices eventServices; 

    protected String redirectUrl; 

    public String getRedirectUrl() { 
     return redirectUrl; 
    } 

    public void setRedirectUrl(String redirectUrl) { 
     this.redirectUrl = redirectUrl; 
    } 

    public void setEventServices(EventServices eventServices) { 
     this.eventServices = eventServices; 
    } 
} 

내 이벤트 조치 클래스 인 이벤트에 대한 내 서비스 클래스 (Listing.java)

public class Listing extends EventAction{ 
    public String execute(){ 
     events = eventServices.getEvents(); 
     return "success"; 
    } 

    List<Event> events; 

    public List<Event> getEvents(){ return events; } 
} 

조각에서 보기 (Listing .jsp)

<s:iterator value="events"> 
    <form action='Delete.action'> 
    <input type='hidden' name=id value='<s:property value="id" />' /> 
    <input type='submit' value='-' title='Delete' /> 
    </form> 
    <form action='Attendance.action'> 
    <input type='hidden' name=id value='<s:property value="id" />' /> 
    <input type='submit' value='A' title='Attendance' /> 
    </form> 
    <s:property value="name" /> 
    <br> 
</s:iterator> 

그리고는이 도움이 될 것입니다 경우 모르겠어요 내 스트럿 sessionFactory에

<?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:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 


    <bean id="sessionFactory" scope="singleton" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="configLocation" value="classpath:hibernate.cfg.xml"/> 
    </bean> 

    <!-- Springs Hibernate Transaction Manager --> 
    <bean id ="transactionManager" class = "org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name = "sessionFactory" ref = "sessionFactory"/> 
    </bean> 

    <tx:annotation-driven/> 

    <!-- Inject my business services class to the action --> 
    <bean id="services" class ="services.Services" scope ="singleton"> 
     <property name = "sessionFactory" ref = "sessionFactory"/> 
    </bean> 

    <bean id="evemtservices" class ="services.EventServices" scope ="singleton"> 
     <property name = "sessionFactory" ref = "sessionFactory"/> 
    </bean> 

</beans> 

의 라이프 사이클을 관리 설정 XML

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 
    <constant name="struts.devMode" value="true" /> <!-- set to false for prod --> 

    <package name="events" namespace="/events" extends="struts-default"> 
     <action name="*" class="actions.events.{1}"> 
      <result>/views/events/{1}.jsp</result> 
      <result name="redirect" type="redirect">${redirectUrl}</result> 
     </action> 
    </package> 

    <package name="root-redirect" namespace="/" extends="struts-default"> 
     <action name="*"> 
      <result type = "redirect">events/Listing.action</result> 
     </action> 
    </package> 

</struts> 

그리고 응용 프로그램 컨텍스트 XML입니다 그리고 이것은 오류이다

Struts Problem Report 
Struts has detected an unhandled exception: 
Messages: 
File: actions/events/Listing.java 
Line number: 12 

전체 스택 트레이스

,536,913,632 의견에 따라 10
java.lang.NullPointerException 
    actions.events.Listing.execute(Listing.java:13) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    java.lang.reflect.Method.invoke(Unknown Source) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:446) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:285) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) 
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:544) 
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) 
    com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:119) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    java.lang.Thread.run(Unknown Source) 
+0

전체 오류 스택을 표시 할 수 있습니까? 'eventServices'와 id가'evemtservices'와 같은 한 오타가 있기 때문에 당신의 행동에 서비스가 주입되지 않고 행동 클래스에'eventServices'를 주입하는 것과 같습니다. –

+0

@UmeshAwasthi 나는 전체 stacktrace를 게시했습니다. 질문을 다시 확인 – KyelJmD

+0

당신은 오타를 교차 확인 했습니까 ?? 당신은 액션 클래스에서'eventservices'라는 이름으로'evemtservices'라고 선언 했습니까? –

답변

1

게시 답 :

문제가 오타를 기반으로 한이있는 봄

<bean id="evemtservices" class ="services.EventServices" scope ="singleton"> 
     <property name = "sessionFactory" ref = "sessionFactory"/> 
</bean> 

이드로 선언 된 영업 이익의 액션 class.In bean 정의에 서비스를 주입 할 수 없습니다 evemtservices이며 액션 클래스에서 사용되는 속성은 eventservices입니다.

스프링에 의해 서비스가 주입되지 않았으므로 메소드 호출이 널 포인터를 던지고있었습니다.

+0

여기에서 더 자세한 설명을 제공 할 수 있습니까? applicationContext.xml에서 eventServices 또는 EventAction을 사용할 수 없으므로 Spring에서 eventServices 변수를 어떻게 발견 했습니까? – KyelJmD

+0

struts2-spring 플러그인을 사용하고 있다고 믿고 있습니다. 플러그인 의존성을 확인하려면 http://struts.apache.org/2.3.4/docs/spring-plugin.html을 참조하십시오. –