Java NullPointerException从DB获取数据时,使用注释调用Struts 2中的操作

Java NullPointerException从DB获取数据时,使用注释调用Struts 2中的操作,java,struts2,annotations,Java,Struts2,Annotations,编辑 这是我的动作课 public类StatusAction扩展ActionSupport实现模型驱动{ /** * */ 私有静态最终长serialVersionUID=5686197289029560661L; 私有状态状态=新状态(); private List lstStatus=new ArrayList(); private StatusService sttService=new statusserviceinpl(); @凌驾 公共状态getModel(){ //TODO自动生

编辑

这是我的动作课

public类StatusAction扩展ActionSupport实现模型驱动{
/**
* 
*/
私有静态最终长serialVersionUID=5686197289029560661L;
私有状态状态=新状态();
private List lstStatus=new ArrayList();
private StatusService sttService=new statusserviceinpl();
@凌驾
公共状态getModel(){
//TODO自动生成的方法存根
返回状态;
}
@操作(value=“/lstStatus”),结果={
@结果(name=“success”,location=“/list.jsp”)
})
公共字符串列表(){
lstStatus=sttService.listStatus();
回归成功;
}
@操作(value=“/hello”),结果={
@结果(name=“success”,location=“/NewFile.jsp”)
})
公共字符串hello1(){
回归成功;
}
//准备
公共状态getStatus(){
返回状态;
}
公共无效设置状态(状态){
这个状态=状态;
}
公共列表getLstStatus(){
返回状态;
}
公共无效setLstStatus(列表lstStatus){
this.lstStatus=lstStatus;
}
}
当我使用动作注释而不是xml时,它抛出
NullPointerException
。但是当我使用xml时,它毫无例外地运行

My
struts.xml


/list.jsp
以下是例外情况:

   Server startup in 3621 ms
   java.lang.NullPointerException
at com.sem4.dao.StatusDAOImpl.getListStatus(StatusDAOImpl.java:25)
at com.sem4.service.StatusServiceImpl.listStatus(StatusServiceImpl.java:16)
at com.sem4.actions.StatusAction.list(StatusAction.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
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:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
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)
这是StatusDAOImpl(实现StatusDAO接口)

@SessionTarget
会话ss;
@交易目标
事务传输;
@抑制警告(“未选中”)
@凌驾
公共列表getListStatus(){
List lst=new ArrayList();
试一试{
lst=ss.createQuery(“来自状态”)
.list();
}捕获(例外情况除外){
例如printStackTrace();
}
返回lst;
}
以及此StatusServiceImpl(impl StatusService接口)

private StatusDAO sttDAO=new StatusDAOImpl();
@凌驾
公共列表列表状态(){
//TODO自动生成的方法存根
返回sttDAO.getListStatus();
}
注意:当我调用一个没有DB数据的方法时,我使用注释,这没关系


我能做些什么来解决这个问题

根据异常stacktrace,显然
会话ss
null
。因此,当您试图为action类添加
包hibernate default
时,Struts并没有为您注入依赖项。因为这个包有一个名为
basicStackHibernate
的拦截器,它将帮助注入所需的依赖项

要解决此问题,请向action类添加以下注释:

@ParentPackage("hibernate-default")
@InterceptorRef("basicStackHibernate")
public class StatusAction extends ActionSupport implements ModelDriven<Status>{}
@ParentPackage(“休眠默认值”)
@InterceptorRef(“basicStackHibernate”)
公共类StatusAction扩展ActionSupport实现模型驱动的{}
有关更多详细信息,请参阅此类似帖子:


发布例外银行的完整stacktrace,供您回复!我完全例外地编辑。请帮忙!显示与此配置相关的
struts.xml
文件。您是否正在扩展任何包?SessionTarget与hibernate相关吗?我没有struts.xml,因为我使用了注释,并且它是在web.xml中配置的。当我为映射操作(删除注释)创建struts.xml时,一切正常,毫无例外。仅当我使用注释调用操作-->时抛出该异常。SessionTarget与hibernate相关,当然,如果没有,它将不会运行
   private StatusDAO sttDAO = new StatusDAOImpl();

@Override
public List<Status> listStatus() {
    // TODO Auto-generated method stub
    return sttDAO.getListStatus();
}
@ParentPackage("hibernate-default")
@InterceptorRef("basicStackHibernate")
public class StatusAction extends ActionSupport implements ModelDriven<Status>{}