2014-05-01 45 views
1

最近,我需要將Struts2庫從2.3.15.1升級到2.3.16.2。升級Struts 2.3.16.2庫導致錯誤

首先,我升級這些庫:

  • 公地文件上傳-1.3.1.jar
  • 公地IO-2.2.jar
  • Struts2的核心 - 2.3.16.2.jar
  • 的struts2-的JUnit插件,2.3.16.2.jar
  • Struts2的瓷磚 - 插件 - 2.3.16.2.jar
  • XWork的核心 - 2.3.16.2.jar

之後,我試圖登錄網站,它沒有工作。我無法從Tomcat控制檯獲取任何錯誤消息或日誌。

這裏是我的配置文件的某些部分:

web.xml

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<!--Tiles--> 
<listener> 
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> 
</listener> 
<servlet> 
    <servlet-name>tiles</servlet-name> 
    <servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class> 
    <init-param> 
     <param-name>definitions-config</param-name> 
     <param-value>/WEB-INF/tiles.xml</param-value> 
    </init-param> 
</servlet> 

struts.xml

<struts> 
    <constant name="struts.custom.i18n.resources" value="ApplicationResources,errors"/> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.configuration.xml.reload" value="true" /> 
    <constant name="struts.action.extension" value="do" /> 
    <package name="tiles" extends="tiles-default" namespace="/test"> 
    <result-types> 
     <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> 
    </result-types> 
    <default-interceptor-ref name="myStack"/> 
    <global-results> 
     <result name="input">/error.jsp</result> 
     <result name="success" type="tiles">global.setting.successMessage</result> 
     <result name="error" type="tiles">global.setting.errorMessage</result> 
     <result name="index" type="tiles">global.home.index</result> 
    </global-results> 
    <action name="Login" class="test.action.LoginAction"> 
     <result name="index">/index.jsp</result> 
    </action> 
    </package> 
<struts> 

login.jsp

<s:form action="Login.do"> 
    <s:textfield required="true" key="user.account" /> 
    <s:password required="true" key="user.password" /> 
    <s:submit key="normal.login" align="right" method="login"/> 
</s:form> 

我關閉了web.xml中的其他過濾器和struts.xml中的攔截器。

最後,我無法登錄網站,也沒有從Tomcat控制檯獲取任何錯誤消息或日誌。

回答

0

如果沒有得到從Tomcat控制檯任何錯誤消息或日誌,那麼你應該嘗試調試找到問題的應用程序。你應該做的第一件事是打開開發者模式:struts.devMode=true然後你會在控制檯上看到更多的消息。

更接近您的問題:作爲網站上發佈的安全問題,DMI(動態方法調用)已被默認配置設置關閉。但是,您可以更改此設置以允許params攔截器接受method:參數。或者你應該重構你的應用程序只使用映射方法。例如,

<action name="Login" class="test.action.LoginAction" method="login"> 
    <result name="index">/index.jsp</result> 
</action> 
+0

謝謝你,先生。我打開'struts.devMode = true',但沒有在Tomcat控制檯上顯示。這確實是DMI問題。 [S2-019](http://struts.apache.org/release/2.3.x/docs/s2-019.html) – Ashkandi