1

struts2 Web アプリケーションがあります。

言語をアラビア語に変更すると、すべてのクエリ文字列 URL で特定の結果が得られません。これ?は、何らかの変数名と見なされ、Struts2 によってターゲット アクションに適切にマップされていないためだと思います。

インターネットにある例はうまくいくようですが、これは私のストラット構成に関係していると思います。

<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 likehttp://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

4

1 に答える 1

4

実際には非常に単純です。アラビア語は右から左へのスクリプトです。したがって、-1実際には(および文字列)、負の整数を投稿1-するために入力する必要があります。1-

于 2013-11-11T11:11:40.627 に答える