我有一个struts2网络应用程序。
当我将语言更改为阿拉伯语时,所有查询字符串网址都会给出不确定的结果。我想这是因为?
被认为是一些变量名,然后它没有被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" />
只要语言是英语,像http://localhost:8084/myaction?id=4
这样的url就可以正常工作并返回所需的数据但是一旦语言发生变化,就永远不会调用该url bound动作,而是调用其他一些随机动作。
[UPDATE]
不调用随机动作。实际上,参数不会被映射,因此,由于操作中的验证检查,操作返回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]
我尝试过使用更多语言并发现它,它不仅适用于阿拉伯语言。我想这与他们的左右对齐有关。
我还设法写了一个小样本应用程序,它表明只有当语言是阿拉伯语时,表单提交才会出错&amp;与其他任何语言(英语,中文,法语)一起工作正常。
我还为struts2 jira提交了一个错误 - https://issues.apache.org/jira/browse/WW-4241
答案 0 :(得分:4)
实际上它非常简单:阿拉伯语是从左到右的脚本。因此,-1
实际上是1-
(和一个字符串),您需要输入1-
来发布负整数。