1

我终于可以让 execandwait 拦截器在我的 struts2 应用程序中执行文件上传操作。用户选择文件并点击提交后,会显示等待页面,然后根据上传结果显示成功或错误页面。当这一切都在我们的开发环境(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>

等待.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

4

0 回答 0