负整数请求参数无法识别时,语言是阿拉伯语,其他语言,如英语,德语,法语和中国做工精细(Negativ

2019-10-18 23:16发布

我有一个Struts2的Web的应用程序。

当我更改语言为阿拉伯语,所有的查询字符串的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" />

只要语言是英语,网址就像http://localhost:8084/myaction?id=4的作品完美的罚款,并返回所需的数据,但一旦语言发生了变化,该URL限制的行动不会被调用,而不是其他一些随机动作被调用。

[UPDATE]

随机行为不叫。 实际上,参数不被映射,因此,由于验证检查的动作,动作返回INPUT。 但是,当语言是英语,即参数被完全映射和返回成功相同的URL的作品。

[UPDATE 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>

以上是我使用的拦截器栈。

[UPDATE 3]

http://localhost:8084/search?id=-1&...

只有值参数-1是给OGNL异常Error Setting Expression ,其余的数字似乎很好地工作。

[UPDATE 4]

我用更多的语言尝试和揣摩的是,它不仅对阿拉伯语言的工作。 我想这事做与他们的左右对齐。

我也设法写一个小示例应用程序,这表明仅在语言为阿拉伯语,表单提交给误差及与其他任何其他语言(英语,中国,法国),它工作正常。

我也提出了错误的struts2的JIRA本- https://issues.apache.org/jira/browse/WW-4241

Answer 1:

其实道理很简单:阿拉伯语是从右到左的脚本。 所以,你的-1实际上是1- (和字符串),你需要输入1-后负整数。



文章来源: Negative integer request parameters not recognized when language is Arabic, other languages like english, german, french & chinese work fine