当语言为阿拉伯语时,无法识别负整数请求参数,其他语言如英语,德语,法语和英语中国工作很好

时间:2013-11-09 12:17:23

标签: struts2 internationalization struts2-interceptors

我有一个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

1 个答案:

答案 0 :(得分:4)

实际上它非常简单:阿拉伯语是从左到右的脚本。因此,-1实际上是1-(和一个字符串),您需要输入1-来发布负整数。