Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2动作映射问题_Java_Jsp_Struts2_Struts_Tiles - Fatal编程技术网

Java Struts2动作映射问题

Java Struts2动作映射问题,java,jsp,struts2,struts,tiles,Java,Jsp,Struts2,Struts,Tiles,大家好, 这不是一个真正的问题,但我想知道如何限制以下行为 我的stuts.xml文件中有这个集合 <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <constant name="struts.custom.i18n.re

大家好,

这不是一个真正的问题,但我想知道如何限制以下行为

我的stuts.xml文件中有这个集合

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.custom.i18n.resources" value="ApplicationResources" />

    <package name="default" extends="struts-default" namespace="/">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>

        <action name="blue">
            <result name="success" type="tiles">/blue.tiles</result>
        </action>

        <action name="yellow">
            <result name="success" type="tiles">/yellow.tiles</result>
        </action>

        <action name="red">
            <result name="success" type="tiles">/red.tiles</result>
        </action>
     </package>
</struts>
但是你也可以这样访问它们

http://localhost:port/yellow/blue/
http://localhost:port/red/blue/yellow
因此,ti触发“/”之后提到的所有操作

我想防止这种情况发生,所以我想知道是否有办法限制它

提前感谢,,
Alex

web.xml
中,struts操作映射可能有这样一个条目

<servlet-mapping>
    <servlet-name>struts2</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
如果您使用的是struts 2.1.7或更高版本,那么可以添加如下排除模式

<servlet-mapping>
    <servlet-name>struts2</servlet-name>
    <url-pattern>/blue</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>struts2</servlet-name>
    <url-pattern>/yellow</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>struts2</servlet-name>
    <url-pattern>/red</url-pattern>
</servlet-mapping>
<constant name="struts.action.excludePattern" value="/([a-zA-Z0-9]+)/.*"/>


好的,我已经更新了我的第一篇帖子。请检查
struts.mapper.alwaysSelectFullNamespace
属性。要使互动程序正常工作,我想我应该这样映射它们。。/red.tiles实际上它不起作用..我不知道为什么它一直在说..“与上下文路径[/test]关联的命名空间[/]和操作名称[red]没有映射的操作”。我应该将这些操作保留在同一个包中(对于anmespace=“/”@Wracker,您可以将它们放在同一个包中)。你试过排除模式吗?如果您使用的是struts 2.1.7或更高版本,它将解决您的问题。是的,它正在工作,尽管它没有执行我以前的操作,如“GetMyReports”等。。尝试使常规表达式不区分大小写(“/([a-z0-9]+)/i.*),但没有帮助..有dieas吗?
<constant name="struts.action.excludePattern" value="/([a-zA-Z0-9]+)/.*"/>