2

私のSpringWebMVCアプリケーションには、入力パラメーターとして@Controllerを受け入れる一連のメソッドがsにあります。カスタムデータバインダーやプロパティエディターを定義しないと(これら2つの違いについてはまだはっきりしていません)、デフォルトでサポートされている日付形式は何ですか?たとえば、「11/12/2012 16:50 PM」のようなものは正常に機能しますが、「1352815200000」のような単純なミリス値は拒否されます。Date@RequestParam

編集:私が得る特定の例外は次のとおりです:"タイプ'java.lang.String'の値を必要なタイプ'java.util.Date'に変換できませんでした;ネストされた例外はjava.lang.IllegalStateExceptionです:タイプ[javaの値を変換できません.lang.String]を必要なタイプ[java.util.Date]に:一致するエディターまたは変換戦略が見つかりません "

4

3 に答える 3

0

許可される日付形式は、おそらく現在のロケールによって異なります。

日付を好きな形式に変換するハンドラーを追加できます。

どれだったのかよくわかりません。@InitBinderは、日付を任意の形式から変換する例を示しています。

于 2012-11-12T22:23:22.787 に答える
0

コンバーターが指定されていない場合、Spring変換システムは、DateStringを引数として取る非推奨のコンストラクターを呼び出すことになります。

/**
 * Allocates a <code>Date</code> object and initializes it so that
 * it represents the date and time indicated by the string
 * <code>s</code>, which is interpreted as if by the
 * {@link Date#parse} method.
 *
 * @param   s   a string representation of the date.
 * @see     java.text.DateFormat
 * @see     java.util.Date#parse(java.lang.String)
 * @deprecated As of JDK version 1.1,
 * replaced by <code>DateFormat.parse(String s)</code>.
 */
@Deprecated
public Date(String s) {
    this(parse(s));
}

通常、アプリケーションにはさまざまな要件があります-現地時間で動作するものもあれば(ブラウザ固有のものやユーザーのタイムゾーン設定が機能する場合もあります)、日付を保存する必要がないものもあります-したがって、両方の日付変換のポリシーを実装することをお勧めしますクライアント側とサーバー側。

Date.parse()PSこれも非推奨であることに注意してください。

于 2012-11-13T06:35:51.037 に答える
0

これがあなたのために働くことを願っています。

クラスを作成する日付形式のエディターを登録します。

import org.springframework.beans.PropertyEditorRegistrar
import org.springframework.beans.PropertyEditorRegistry
import org.springframework.beans.propertyeditors.CustomDateEditor
import java.text.SimpleDateFormat

public class CustomDateEditorRegistrar implements PropertyEditorRegistrar {

public void registerCustomEditors(PropertyEditorRegistry registry) {

    String dateFormat = 'yyyy/MM/dd'
    registry.registerCustomEditor(Date, new CustomDateEditor(new SimpleDateFormat(dateFormat), true))
}
}
于 2012-11-13T08:12:20.687 に答える