Java Struts2动作映射问题
大家好, 这不是一个真正的问题,但我想知道如何限制以下行为 我的stuts.xml文件中有这个集合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
<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]+)/.*"/>