我终于可以在我的struts2应用程序中使用execandwait拦截器来处理文件上传操作。 用户选择文件并单击“提交”后,将显示“等待”页面,然后根据上载结果显示成功或错误页面。 在我们的开发环境(Tomcat服务器)上完成所有这些工作后感觉很有成就。
但是,我现在遇到的问题是尝试使用相同的代码来处理Weblogic 10.3。 在Weblogic上:选择文件并单击“提交”后,将显示“等待”页面,在第一次刷新后,我将获得nullPointerException(详情如下)
class java.lang.NullPointerException
Error Message:
Stack Trace:
com.actions.myAction.upload(myAction.java:80)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57)
java.lang.Thread.run(Thread.java:619)
在调试时,我看到每次刷新等待页面时,控件实际进入myAction类,这不是execAndWait拦截器应该如何工作(??)
任何人都可以帮我这个吗? execAndWaitInterceptor在Tomcat和Weblogic上的工作方式有何不同?
注意:如果没有execAndWait拦截器,文件上传实用程序也可以在Weblogic上正常工作。
struts.xml中
<action name=myAction" class="myActionClass" method="myMethod">
<interceptor-ref name="completeStack" />
<interceptor-ref name="execAndWait">
<param name="delay">1000</param>
<param name="delaySleepInterval">500</param>
</interceptor-ref>
<result name="wait">/WEB-INF/pages/wait.jsp</result>
<result name="success">/WEB-INF/pages/success.jsp</result>
<result name="input">/WEB-INF/pages/inputPage.jsp</result>
</action>
wait.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="refresh" content="5;url=<s:url includeParams="all" />"/>
</head>
<body>
<h1>Struts 2 execAndWait example</h1>
<h3>Please wait ...</h3>
</body>
</html>
TIA