最近完成した学校の春のMVCは、問題が発生しました。私は、フォームその持っている場合は、データの日付種類(例えば、誕生日など)を使用すると、バックグラウンドのコントローラに送信するとき、発生400errorを、短い言葉で400errorは、背景のリクエストパラメータの型とパラメータの型を受信している罰金ではありません。
私はこれがあるため、おそらくであることを推測する日付型パラメータ問題;以下は、受信日付型パラメータで処理するspringMVC処理の一部をまとめたものです。
==== 1の方法
私たちは、文字列と背景が最初に受信し、その文字列を日付に変換パラメータ。/ **
*新入社員 * * @param empVo * @return 戻り、正常識別 * / @ RequestMapping( "/ empAdd" ) @ResponseBody // hiredayフォームの受信日時の上に渡され 、公開ストリングempAdd(EmpVo empVo、文字列のhireday){
//日付の文字列形式は、に変換 てSimpleDateFormat形式 = 新しい新しいてSimpleDateFormat( "MM-DD-YYYY"を); 持つParsePosition POSITION1 = 新しい新しい持つParsePosition(0 ); 日付hiredayDate = format.parse(hireday、ポジション1); // 出産のエントリ日と日付です empVo.setHireDay(hiredayDate); // 。DateHelper.parseString(StringHelper.getBirAgeSex(empVo.getCardno())GET( "誕生日") // 誕生によりIDカードを取得日付 empVo.setBirthday(DateHelper.parseString(StringHelper.getBirAgeSex(empVo.getCardno())GET( "誕生日")、 "MM-DD-YYYY。" )); // 状態 empVo.setStatus(1。); // デフォルトパスワード empVo.setPassword( "123456" ); emp.save(empVo); リターン "成功" ; }
====二つの方法
日付形式エンティティクラスの追加注釈
@DateTimeFormat(パターン= "YYYY-MM-DD" ) プライベート日hireDay。// 入职日期 @JsonFormat(パターン = "YYYY-MM-DD"、タイムゾーン= "GMT + 8" ) 公衆日getHireDay(){ 戻りhireDayと、 }
====方法3(推奨)
結合方法コントローラ日付データを追加します。
//は、Dateクラスに文字列に変換し @InitBinder 公共 のボイドinitBinder(WebDataBinderバインダー、WebRequestクラスリクエスト){の // コンバート日付形式 はDateFormat DATEFORMAT = 新しい新しいてSimpleDateFormat( ":MM:MM-DD-YYYY HH SSを" ); // 登録カスタムエディタ binder.registerCustomEditor(日。クラス、新しい新しい CustomDateEditor(DATEFORMAT、真の)); }
====方法4
日付は、グローバルコンフィギュレーションと型コンバータを実現します
デザインの日付は、クラスを変換します
パッケージcom.xueqing.demo。 輸入java.text.DateFormatの。 輸入java.text.SimpleDateFormatの。 輸入java.util.Date; 輸入org.springframework.beans.propertyeditors.CustomDateEditor; 輸入org.springframework.web.bind.WebDataBinder。 輸入org.springframework.web.bind.support.WebBindingInitializer; 輸入org.springframework.web.context.request.WebRequest; パブリック クラス DateEdtor 実装WebBindingInitializer { 公共 ボイドinitBinder(WebDataBinderバインダー、WebRequestクラスリクエスト){ //TODO自動生成されたメソッドスタブ // 转换日期格式 にDateFormat DATEFORMAT = 新しいてSimpleDateFormat( "YYYY-MM-DD HH:MM:SS" ); binder.registerCustomEditor(日付。クラス、新しい CustomDateEditor(DATEFORMAT、真)); } }
春MVCプロファイルに設定
<! -配置全局日期转换器- > <豆のクラス = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <プロパティ名= "webBindingInitializer"> <豆のクラス = "nuc.ss.wlb .core.web.DateEdtor "/> </ property>の </豆>