2016-04-14 8 views
3
JSPで

:アクションでローカライズされた小数点記号を使用してJSPから小数点値をアクションに渡す方法はありますか?

<input type = "number" 
     name = "score" 
     min = "0" 
     max = "100" 
    maxlength = "3" 
     step = "0.01" /> 

@Getter @Setter private Float score; 

値は、小数点以下の桁(例えば56,78)が、アクションに私は5678.0を取得します。

これは、Struts2のは、私の国で,小数点区切り、ない何千区切りであることを認識していないという事実によるものです。

浮動小数点数を正しく変換できるように、特定のLocaleの小数点記号をStruts2に使用するよう指示する方法はありますか?

答えて

3

値は、小数点以下の桁(例えば56,78)は、アクションに私は、値がデフォルトのロケールを使用して変換されるためです5678.0

を取得します。 AFAIK Struts2型変換はロケールを意識しており、ローカライズガイドに従って、リソースバンドル内の各ロケールの特定のフォーマットを定義することができます。

リソースバンドル内の番号については、defining formatsから始めることができます。異なるロケールの数値フォーマットが同じであるように見えます。特定のロケールには独自の10進形式のシンボルが含まれているため、数値の書式設定された出力は、値が出力用に書式設定されているか、番号に型変換されたときにStrutsで使用される現在のロケールにのみ依存します。

Struts2は、現在のロケールをアクションコンテキストに保持し、セッションに格納して、新しい要求でアクションコンテキストを設定します。

これは、私の国で私の国では桁区切り記号ではなく、桁区切り文字であることを認識していないためです。

Strutsは、実行しているJVMのロケールが登録されている場合、あなたの国のロケールを認識しています。詳しくはStruts 2 (version 2.3.28) only accepts registered localesを参照してください。ロケールは、OSのデフォルトロケールではなくロケールが異なるブラウザーによって暗黙的に要求され、インターセプターによって処理されるrequest_localeパラメーターを介して明示的に要求されます。 Get user locale detected by i18n interceptor in action classを参照してください。

浮動小数点数を正しく変換できるように、特定のLocaleの小数点記号を使用するようにStruts2に指示する方法はありますか?

Strutsは、ロケールを認識している数値の書式設定と変換に10進形式を使用しています。必要なのは、現在のロケールをStrutsに設定し、ユーザーに番号を表示するかアクションにサブミットする前に、このロケールに応じてフォーマット番号を設定することだけです。

+0

私はStruts Actionに正しいロケール(?)でフォーマットされた数字をどうやって得ることができるのですか? - 問題のexplanaitionのためのThx、それはUsの外では非常に一般的です:) - とにかく、アプリケーションサーバー(jboss6。3eap)は、en_USのロケールを持つvm argを持っていますが、私のブラウザはスペイン語のロケールを使用しているので、問題はクライアント側にあるようです:( –

+0

アクションに設定されている数字はすでに別の質問です。プロパティー型ですが、 'float'の場合は' float'に変換する必要があります。もし要求されたロケールを使用できない場合は、 'i18n'インターセプターのパラメーターを使用してアクションコンテキストを更新してください。値がプロパティに設定されています。 –

+0

これは大いに助けます。私は、入力 "numer"のロケールをデフォルト(enquery)でenに変更するか、これを使用します:http://stackoverflow.com/questions/29428888/how-to-submit-locale-aware-values-in-struts-2(グローバルでリソースを作成し、数値をフォーマットする)、explanaitionのためのthx、今私はこれにいくつかの解決策を見つける必要があります:D –

関連する問題