2

在struts2中,是否可以有一个带有空格的动作名称?

我正在使用 RegexPatternMatcher

<constant name="struts.patternMatcher" value="regex"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>

我的动作被定义为

<action name="/users/{username}"
        method="execute"
        class="com.test.UserAction">
    <result name="success" type="tiles">.test.user</result>
</action>

当我尝试类似的 url 时,http://localhost:8080/users/a%20space a%20space 在模型中被设置为 aspace。%20 没有被转义,只是被删除。我也试过http://localhost:8080/users/a+space了,同样的事情发生了。

环境 Struts2 版本,2.3.15.1

4

1 回答 1

0

您可以通过在 struts 配置中设置参数来允许操作名称中的空格,

struts.allowed.action.names

默认是

[a-zA-Z0-9._!/\-]*

DefaultActionMapper 使用此正则表达式来验证操作名称。如果不匹配,它会尝试清理它。

所以修改设置为

<constant name="struts.allowed.action.names" value="[ a-zA-Z0-9._!/\-]*"/>

允许空格

于 2013-08-22T15:20:37.067 回答