天天看點

struts2.3.16中表單重複送出出現空指針異常

異常代碼形式:

嚴重: exception occurred during processing

request: null

java.lang.nullpointerexception

 at

com.opensymphony.xwork2.util.localizedtextutil.findtext(localizedtextutil.java:630)

    at

com.opensymphony.xwork2.util.localizedtextutil.findtext(localizedtextutil.java:606)

com.opensymphony.xwork2.textprovidersupport.gettext(textprovidersupport.java:210)

com.opensymphony.xwork2.textprovidersupport.gettext(textprovidersupport.java:139)

org.apache.struts2.interceptor.tokeninterceptor.geterrormessage(tokeninterceptor.java:182)

org.apache.struts2.interceptor.tokeninterceptor.handleinvalidtoken(tokeninterceptor.java:166)

org.apache.struts2.interceptor.tokeninterceptor.handletoken(tokeninterceptor.java:151)

org.apache.struts2.interceptor.tokeninterceptor.dointercept(tokeninterceptor.java:142)

com.opensymphony.xwork2.interceptor.methodfilterinterceptor.intercept(methodfilterinterceptor.java:98)

com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:246)

org.apache.struts2.impl.strutsactionproxy.execute(strutsactionproxy.java:54)

org.apache.struts2.dispatcher.dispatcher.serviceaction(dispatcher.java:562)

org.apache.struts2.dispatcher.ng.executeoperations.executeaction(executeoperations.java:77)

org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter.dofilter(strutsprepareandexecutefilter.java:99)

org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)

org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)

org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:233)

org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:191)

org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127)

org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)

org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109)

org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:293)

org.apache.coyote.http11.http11aprprocessor.process(http11aprprocessor.java:879)

org.apache.coyote.http11.http11aprprotocol$http11connectionhandler.process(http11aprprotocol.java:617)

org.apache.tomcat.util.net.aprendpoint$worker.run(aprendpoint.java:1760)

java.lang.thread.run(thread.java:662)

異常原因:

(1)如果把相關的<s:token/>等關于重複送出的配置

去掉就會一切正常,

一加上action所有的屬性全部為空.

診對這個問題,如果加上其它的攔截器如token的攔截器,

那麼struts2.3.16預設的攔截器

不會被執行,而為action中的對象指派剛好是預設攔截器的功能.

是以解決方法就是我們在配置過struts2.3.16重複送出的攔截器功能後還要手動的配置一下

預設的攔截器,否則前台頁面送出的東西就不能自動的為action進行指派

struts.xml的代碼:

<?xml version="1.0" encoding="utf-8"

?>

<!doctype struts

public

    "-//apache

software foundation//dtd struts configuration 2.3//en"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <package name="struts"

extends="struts-default" >

        <action

name="login" class="action.loginaction">

         <interceptor-ref

name="defaultstack"></interceptor-ref>

name="token"></interceptor-ref>

         <result

name="invalid.token">/error.jsp</result>

         <result name="success"

type="dispatcher">

             <param

name="location">/login.jsp</param>

         </result>

 </action>

 </package>

</struts>

同時要注意兩點問:(1)自己寫的action類一點要繼承actionsupport。

(2)表單内部要加上<s:token></s:token>标簽。