我有一个 struts2 网络应用程序。
当我将语言更改为阿拉伯语时,所有查询字符串 url 都会给出不确定的结果。我猜这是因为?
它被认为是一些变量名,然后它没有正确映射到 Struts2 的目标操作。
尽管互联网上的示例似乎运行良好,但我想这与我的 struts 配置有关。
<constant name="struts.devMode" value="false" />
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
<constant name="struts.custom.i18n.resources" value="struts,global"/>
<!-- <constant name="struts.action.extension" value="" />-->
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex" />
只要语言是英语,类似 url 的http://localhost:8084/myaction?id=4
工作就可以很好地工作并返回所需的数据,但是一旦更改了语言,就永远不会调用该 url 绑定操作,而是调用其他一些随机操作。
[更新]
不调用随机动作。实际上,参数没有被映射,因此,由于操作中的验证检查,操作返回 INPUT。但是当语言是英语时,相同的 url 有效,即参数得到完美映射并返回成功。
[更新 2]
<interceptor-stack name="rememberMeStack">
<interceptor-ref name="rememberme"/>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
</interceptor-stack>
以上是我正在使用的拦截器堆栈。
[更新 3]
http://localhost:8084/search?id=-1&...
只有具有值-1
的参数才会给出 OGNL 异常Error Setting Expression
,其余数字似乎工作正常。
[更新 4]
我尝试过使用更多语言并发现它不仅适用于阿拉伯语。我想这与他们的左右对齐有关。
我还设法编写了一个小型示例应用程序,它表明只有当语言为阿拉伯语时,表单提交才会出错,并且与其他任何其他语言(英语、中文、法语)一起工作正常。
我还为此提交了关于 struts2 jira 的错误 - https://issues.apache.org/jira/browse/WW-4241