特定の形式を使用して、ストライプの日付をどのようにバインドしますか? mm/dd/yyyy hh:mm:ss
質問
日付をどのようにバインドしますか ストライプ 特定の形式を使用しますか? 「MM/DD/YYYY HH:MM:SS」
<s:text name="myDateTime" formatPattern="MM/dd/yyyy HH:mm:ss" />
解決
ストライプが使用します TypeConverters 要求パラメーター(文字列)を特定のタイプに変換するため。デフォルトの日付タイプコンバーターのJavadocはこちらをご覧ください:
net.sourceforge.stripes.validation.datetypeconverter
デフォルトの形式を変更するには、次のように述べています。
このデフォルトのフォーマットセットは、Stripes Resource Bundleに異なるフォーマット文字列を提供するか、SubクラスとオーバーライドGetFormatstrings()を提供することで変更できます。すべての場合において、パターンは、スラッシュ、ダッシュ、またはその他の文字の代わりに分離器として単一スペースを使用して指定する必要があります。
と:
フォーマット文字列と前処理パターンを指定するためにリソースバンドルで使用されるキーは、stripes.dateTypeconverter.formatstrings and stripes.dateTypeconverter.preprocesspatternです。
それがあなたのためにそれをしないなら、あなたはいつでもあなたが自分のものを転がすことができます TypeConverter. 。このカスタムタイプコンバーターは、そうすることができます ActionBeanのセッターにバインドされています に:
@Validate(converter=YourCustomTypeConverter.class)
public void setDate(Date date) {
this.date = date;
}
マッピングを自動的に実行する場合は、デフォルトのマッパーをオーバーライドするか、別の(サブ)タイプを作成する必要があります。たとえば、java.util.date用ではなく、java.util.dateから継承する独自のカスタムタイプ用に独自のタイプコンバーターを作成します。追加の動作がないサブタイプであるため、残りのアプリケーションはjava.util.dateとして使用できます。
Date date;
// No @validate needed, maps to MyCustomDate
public void setDate(MyCustomDate date) {
this.date = date;
}
他のヒント
<fmt:formatDate timeZone="${timeZone}" value="${date}" pattern="MM/dd/yyyy hh:mm a"/>
SimpleDateFormat あなたを助けることができます。