本文介绍了在升级到Struts 2.3.16.3之后:提交不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近升级到Struts 2.3.16.3,即从2.3.15.1版本的最新版本



现在我的提交按钮已停止工作,当我使用 -

 < s:submit align =centeraction ='Login_loginUser'value =Login/> 

我的操作映射如下 -

 < action name =Login_ *method ={1}class =com.XXXX.XXXX.XXX.LoginAction> 
< result name =inputtype =tiles> login.tiles< / result>
< result name =success> /jsp/common/success.jsp< / result>
< / action>

我的struts.xml如下 -

 <?xml version =1.0encoding =UTF-8?> 
<!DOCTYPE struts PUBLIC
- // Apache Software Foundation // DTD Struts Configuration 2.3 // EN
http://struts.apache.org/dtds/struts- 2.3.dtd>
< struts>
< constant name =struts.enable.DynamicMethodInvocationvalue =true/>
< constant name =struts.action.extensionvalue =action/>
< include file =com / emsproject / system / sysconfig / login.xml/>
< / struts>

我的web.xml如下 -

 < web-app id =WebApp_9version =2.4xmlns =http://java.sun.com/xml/ns/j2ee
xmlns :xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://java.sun.com/xml/ns/j2ee http:// java。 sun.com/xml/ns/j2ee/web-app_2_4.xsd\">
< display-name> eSchoolMate< / display-name>
< filter>
< filter-name> struts2< / filter-name>
< filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter< / filter-class>
< init-param>
< param-name> actionPackages< / param-name>
< param-value> com.mypackages< / param-value>
< / init-param>
< / filter>
< filter-mapping>
< filter-name> struts2< / filter-name>
< url-pattern> *。action< / url-pattern>
< / filter-mapping>
< filter-mapping>
< filter-name> struts2< / filter-name>
< url-pattern> / struts / *< / url-pattern>
< / filter-mapping>
< listener>
< listener-class> org.apache.struts2.tiles.StrutsTilesListener< / listener-class>
< / listener>
< listener>
< description> sessionListener< / description>
< listener-class> com.emsproject.action.common.SessionListener< / listener-class>
< / listener>
< context-param>
< param-name> tilesDefinitions< / param-name>
< param-value> /WEB-INF/tiles.xml< / param-value>
< / context-param>
< welcome-file-list>
< welcome-file> /jsp/common/index.html< / welcome-file>
< / welcome-file-list>
< servlet>
< servlet-name> MyInfo< / servlet-name>
< servlet-class> com.mypackage.action.common.MyServlet< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> MyInfo< / servlet-name>
< url-pattern> / eapp / *< / url-pattern>
< / servlet-mapping>

< / web-app>

我尝试了排版参数更改,如发行说明中所述,但似乎没有任何效果。 p>

如果我改变s:提交到HTML输入类型按钮&从javascript调用操作如下 -

  function callLogin(){
document.getElementById('sysForm') .target =_ self;
document.getElementById('sysForm')。action ='/ coms / common / Login_loginUser.action';
document.getElementById('sysForm')。submit();
}

这很好,但是在整个应用程序



不确定为什么在此版本中操作映射未解决,因为一切在Struts 2.3.15.1中都正常。



感谢

解决方案

许多安全修补程序(包括)发生在要在提交标签中使用操作属性启用某些功能或功能 struts.xml中的以下常量

 < constant name = struts.mapper.action.prefix.enabledvalue =true/> 


I recently upgraded to Struts 2.3.16.3 i.e the latest version of the release from 2.3.15.1

Now my submit buttons have stopped working when I use -

<s:submit align="center" action='Login_loginUser' value="Login"/>

My action mapping are as below -

<action name="Login_*" method="{1}" class="com.XXXX.XXXX.XXX.LoginAction">
    <result name="input" type="tiles">login.tiles</result>
    <result name="success">/jsp/common/success.jsp</result>
</action>

My struts.xml is as below -

<?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>
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    <constant name="struts.action.extension" value="action"/>
    <include file="com/emsproject/system/sysconfig/login.xml"/>
 </struts>

My web.xml is as below -

<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>eSchoolMate</display-name>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>com.mypackages</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/struts/*</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>
    <listener>
        <description>sessionListener</description>
        <listener-class>com.emsproject.action.common.SessionListener</listener-class>
    </listener>
    <context-param>
        <param-name>tilesDefinitions</param-name>
        <param-value>/WEB-INF/tiles.xml</param-value>
    </context-param>
    <welcome-file-list>
        <welcome-file>/jsp/common/index.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>MyInfo</servlet-name>
        <servlet-class>com.mypackage.action.common.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyInfo</servlet-name>
        <url-pattern>/eapp/*</url-pattern>
    </servlet-mapping>

</web-app>

I tried the exclude parameter change as mentioned in the release notes, but nothing seems to work.

If I change the s:submit to HTML input type button & call the action from the javascript as below -

function callLogin(){
    document.getElementById('sysForm').target="_self";
    document.getElementById('sysForm').action='/coms/common/Login_loginUser.action';
    document.getElementById('sysForm').submit();
}

This works fine but it would be a huge change throughout the application :(.

Not sure why the action mappings are not resolved in this version as everything works fine in Struts 2.3.15.1.

Any help would be much appreciated.

Thanks

解决方案

Many security fixes, including S2-016, occurred to the latest release, so some features or functionality is disabled by default. To enable the using action attribute in submit tag use the following constant in struts.xml

<constant name="struts.mapper.action.prefix.enabled" value="true"/>

这篇关于在升级到Struts 2.3.16.3之后:提交不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 10:40
查看更多