4

JSF を使用してアプリケーションを構築しました。サーバーによって発行されるすべてのメッセージは、リソース バンドルを使用してローカライズされています。

私の質問は、リソース バンドルに格納されたメッセージでローカライズされた javascipt を使用してクライアント ブラウザで発行されたメッセージを取得する方法です。

JavaScriptを動的に生成する必要がありますか?もしそうなら、どうすればこれを行うことができますか?

たとえば、次のフォーム検証メソッドで «alert» JavaScript メッセージをサーバーにローカライズさせるにはどうすればよいですか。

function valider() {
    typeActionRadio = document.getElementById("membres_editer_creer:typeActionAdr");
    if (typeActionRadio.style.display == "block") {
        var boutonsRadio = document.forms["membres_editer_creer"]["membres_editer_creer:typeActionAdr"];
        for ( var i = 0; i < boutonsRadio.length; i++)
             if (boutonsRadio.item(i).checked) return true;
    }
     alert ("Vous devez indiquer la raison du changement d'adresse (bouton radio à sélectionner).");
    return false;
}
4

3 に答える 3

10

JSF に目的の JS コードを出力させるだけです。例えば

<script>
    var message = "#{bundle['some.key']}";
</script>

一重引用符や改行などの JS の特殊文字のみを考慮する必要があります。そのために、Apache Commons Langに委任するカスタム EL 関数を登録するか、 OmniFaces関数を使用できます。 StringEscapeUtils of:escapeJS()

于 2013-01-29T03:25:29.590 に答える
3

すべてのキーを提供したい場合は、yout main-template などでそのようなものを使用します。

<script type="text/javascript">
    var msg = new Object();
    <c:forEach items="#{msg.keySet()}" var="key">
        msg.#{key} = "#{msg[key]}";
    </c:forEach>
</script>
于 2013-07-22T12:39:31.790 に答える