2

EDIT

This is my Action Class

public class StatusAction extends ActionSupport implements ModelDriven<Status>{

    /**
     * 
     */
    private static final long serialVersionUID = 5686197289029560661L;

    private Status status = new Status();
    private List<Status> lstStatus = new ArrayList<Status>();
    private StatusService sttService = new StatusServiceImpl();

    @Override
    public Status getModel() {
        // TODO Auto-generated method stub
        return status;
    }

    @Action(value="/lstStatus", results={
            @Result(name="success", location="/list.jsp")
    })
    public String list(){
        lstStatus = sttService.listStatus();
        return SUCCESS;
    }

    @Action(value="/hello", results={
            @Result(name="success", location="/NewFile.jsp")
    })
    public String hello1(){
        return SUCCESS;
    }


    //get, set
    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    public List<Status> getLstStatus() {
        return lstStatus;
    }

    public void setLstStatus(List<Status> lstStatus) {
        this.lstStatus = lstStatus;
    }
}

When I use Action annotation instead of xml, it throws NullPointerException. But when I use xml, it run without exception.

My struts.xml:

   <action name="lstStatus" method="list" class="com.sem4.actions.StatusAction">
        <result name="success">/list.jsp</result>
    </action>

Here is exception:

   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)

This is StatusDAOImpl (implement StatusDAO interface)

   @SessionTarget
Session ss;
@TransactionTarget
Transaction tran;

@SuppressWarnings("unchecked")
@Override
public List<Status> getListStatus() {
    List<Status> lst = new ArrayList<Status>();
    try{
        lst = ss.createQuery("from Status")
                .list();
    }catch(Exception ex){
        ex.printStackTrace();
    }
    return lst;
}

And this StatusServiceImpl (impl StatusService interface)

   private StatusDAO sttDAO = new StatusDAOImpl();

@Override
public List<Status> listStatus() {
    // TODO Auto-generated method stub
    return sttDAO.getListStatus();
}

Note: I use annotations when I call a method with no data from DB, it's ok.

What I can do to fix that?

Wojciech Wirzbicki
  • 3,887
  • 6
  • 36
  • 59
  • Post complete stacktrace of the exception – Chaitanya Apr 07 '15 at 06:41
  • Thank for your reply! I edited with full exception. Pls help! – Đào Duy Tùng Apr 07 '15 at 09:09
  • show the `struts.xml` file related to this configuration. Are you extending any packages? Is SessionTarget is related to hibernate? – Chaitanya Apr 07 '15 at 09:21
  • I don't have struts.xml because I used annotation and it configed in web.xml. When I create struts.xml for mapping action (remove annotation), it's ok, without exception. Only when I use annotation to call action --> throw that Exception. SessionTarget related to hibernate, sure, if not it won't run – Đào Duy Tùng Apr 07 '15 at 09:31

1 Answers1

1

As per the exception stacktrace it is clear that the Session ss is null. So Struts is not injecting the dependencies for you as you are trying to add the package hibernate-default for the action class. Because this package has the interceptor called basicStackHibernate which will help to inject the required dependencies.

To fix the issue, add below annotations to your action class:

@ParentPackage("hibernate-default")
@InterceptorRef("basicStackHibernate")
public class StatusAction extends ActionSupport implements ModelDriven<Status>{}

Refer to this similar post for more details:

Struts + Hibernate: @SessionTarget not working

Community
  • 1
  • 1
Chaitanya
  • 15,403
  • 35
  • 96
  • 137