java - Struts 2 - 适用于任何 URL 的映射操作

标签 java url struts2 web.xml struts-action

我正在使用 Struts2 创建一个 Web 应用程序,但我遇到了与任何 URL 一起使用的映射操作的问题。

在我的 struts.xml 文件中,我配置了一个命名空间为“/registration”的包,其中包含一些操作,主要的操作是“register”。我的应用程序的上下文根是“app/test”。

要访问注册表格,我可以转到“localhost:8080/app/test/registration/register.action”,它会加载我的表格并且效果很好。

但是,如果在命名空间后的 URL 中添加任何内容,例如“localhost:8080/app/test/registration/arbitrary/text/here/register.action”,表单仍会加载。

我想防止这种情况发生,以便您只能通过正确的 URL 访问表单。我在 struts.xml 和 web.xml 中尝试了很多不同的配置选项都无济于事,而且我在网上也找不到关于这个问题的知识。

任何帮助将不胜感激,谢谢!

struts.xml

<struts>
    <package name="myPackage" namespace="/registration" extends="struts-default">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
        </result-types>
        <action name="register" class="edu.uconn.test.action.RegistrationAction" method="input">
            <result name="input" type="tiles">/register.tiles</result>
        </action>
    </package>
</struts>

最佳答案

struts.mapper.alwaysSelectFullNamespace 常量设置为 true:

<constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

当利用 S2 对 URL 中任意参数的支持(例如,通配符、正则表达式模式匹配)时,这可能会产生意想不到的后果。

关于java - Struts 2 - 适用于任何 URL 的映射操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424215/

相关文章:

java - 如何向 spring kafka 消息添加自定义 header 值?

javascript - 如何在 URL 中传递 Javascript 变量? Ajax

java - 有没有办法让 Jersey 不让特殊符号成为 url 安全的?

android - 如何删除应用程序的多个实例

java - Struts2中如何访问请求参数?

validation - 如何在 struts 2 框架中验证选择标签

Java输入中文

java - 为什么新用户使用Spring Boot注册后无法登录?

java - 如何向 Struts 2 添加 Action

java - 关于Java多态性的问题