struts 2 で java.util.Date オブジェクトのフォーマットを変更する方法。私がテストしたところ、Struts 2 は m/d/yy を受け入れます。フォーマットを変更することは可能ですか?
また、デフォルトのメッセージ「フィールド日付の無効なフィールド値」を変更する方法は?
struts2 の日付タグは、出力でのみ使用できます。
struts 2 で java.util.Date オブジェクトのフォーマットを変更する方法。私がテストしたところ、Struts 2 は m/d/yy を受け入れます。フォーマットを変更することは可能ですか?
また、デフォルトのメッセージ「フィールド日付の無効なフィールド値」を変更する方法は?
struts2 の日付タグは、出力でのみ使用できます。
s:date
タグにフォーマットを渡すことができます
<s:date name="myDate" format="yyyy-MM-dd" />
デフォルトのエラー メッセージを変更するにはvalidation.xml
、メッセージ パラメータを追加 します。
<field name="myDate">
<field-validator type="date">
<message key="errors.myDateRequired" />
</field-validator>
</field>
次に、ApplicationResources.properties
ファイルで値を提供しますerrors.myDateRequired
更新:コメントによると
s:date
は読み取り専用タグです。つまり、ユーザーからの入力を受け入れるために使用することはできません。
textField が異なる形式の日付を受け入れるようにするには、いくつかの方法があります。
カスタムコンバーターを使用して、日付にテキストフィールドを使用できます。例
Strutsが受け入れる日付形式は、ユーザーのロケールによって異なります。したがって、ロケールが異なれば、日付形式も異なります。この方法では、同じロケールで複数の日付形式をサポートすることはできませんが、とにかくこれが必要になる理由はわかりません。ユーザーを混乱させるだけです。JavaScriptを使用せずに同じロケールで異なる日付形式をサポートする唯一の方法は、@mprabhatノートのようにカスタム日付コンバーターを使用することです。
これに関する公式ドキュメントを見ることができます:
リソースバンドルのすべての言語の形式を定義します。たとえば、適切な en_US フォーマット定義拡張は次のようになります。
format.date = {0,date,MM/dd/yy}
並行して、以下を de_DE バンドルに追加できます。
format.date = {0,date,dd.MM.yyyy}
http://struts.apache.org/2.1.6/docs/formatting-dates-and-numbers.html