2017-11-06 9 views
0

私は自分のWebアプリケーションの1つに複数の言語を実装しています。ユーザーが選択した言語は、クッキーに保存されます。私は、このクッキーから、このように内容を抽出することができました:JSTL/Expression LanguageのJSON Stringから単一の値を抽出するにはどうすればよいですか?

${cookie.userdata.value} 

私が午前問題は、言語は私はこのクッキーに保存するだけではないということです。ユーザーが最後に通知にアクセスしたときのタイムスタンプもあります。クッキーの完全な値はJSON形式である:

userdata={ 
      "notificationsViewed":1509696860036, 
      "documentNotificationsViewed":1509696859896, 
      "language":"en" 
     } 

私は必要なもの、単に"en"です。

JavaScriptを使用してJSONParserを使用していますが、JSTL/Expression Languageを使用して言語をフェッチできるようにすばらしい場面がありますが、 。今までの私の試みは次のようになります。

<c:set var="language">${cookie.userdata.value.language}</c:set> 

javax.el.PropertyNotFoundException: The class 'java.lang.String' does not have the property 'language'. 

私は何とかJSONのアプローチを使用する必要がありますが、可能かどうかわかりません。誰か知っていますか?私は次のことをやった上で働いていたプロジェクトで

+0

JavaScriptやjava(jsp)でその言語インジケータを使用したい場合JSTL/ELは、クライアントのブラウザでレンダリングされた後、JavaScriptのレンダリング中に動作しますか? – Juan

+0

ほとんどの場合、javascriptを使用すると動作します。しかし、古いコードの中には、ページのレンダリング中に言うように、作業がずっと簡単なものもあります。 – KjetilNordin

+0

下記の私の答えをチェックしてください。私は両方のケースに対処しました。 – Juan

答えて

1

Java側では、ゲッターとJSPにアクセスすることができmeber変数に言語を設定します。

あなたが設定されたCookieまたは任意の他の手段によって使用してこれを行うことができます(ユーザー入力、リクエストヘッダを、...)

JSPでその値を保持し、レンダリングの前に行う任意のローカライズのためにそれを使用して取得ページ。レンダリングされたページの一部として、その後

javascript配列の局在含まれます:ページのHSは、あなたが(JavaScriptで)l10n.languageなどの言語にアクセスすることができ、レンダリングされた後、このように

... 
    <script> 
    var l10n = { 
     "language" : "${language}" 
    }; 
    </script> 
</body> 

この他の文脈では、Wordpressがjavascriptスクリプトのローカライゼーションをどのように処理するのか、多かれ少なかれです。

+0

これはうまくいきます。私が期待していた通りではありませんが、それが私の問題を回避するものであっても、それは良いものであり、同様の事例のために普遍的に実行できる人です。ありがとうございました。 – KjetilNordin

+0

...完全に実装されました。再度、感謝します – KjetilNordin

関連する問題