2017-05-04 11 views
2

"date"タイプの入力をspring mvc Controllerに送信します。 残念ながら、私は多くのエラーが発生し続けています。私はspring mvcに新しく、とりわけ私がなぜ "commandName"をフォームに持つ必要があるのか​​を私にはっきりさせずに提出するようにしました。これまでspring mvcアプリケーションで入力タイプ= "date"を送信

マイコード:

backoffice.jsp:

<form:form method="POST" action="/getAllOnDate" commandName="date"> 
<table> 
    <td><form:label path="date">Date</form:label></td> 
    <td><form:input type="date" path="date"/></td> 
    <input type="submit" value="View all on date"/> 
</table> 
</form:form> 

コントローラー:あなたは日付を直接結合しotのコントローラ内で@InitBinder使用する必要が

@RequestMapping(value = "/backoffice", method = RequestMethod.GET) 
public String backofficeHome(Model model) { 
    model.addAttribute("date", new Date()); 

    return "backoffice"; 
} 

@RequestMapping(value = "/getAllOnDate", method = RequestMethod.POST) 
public String getAllReservationsForRestaurantOnDate(@ModelAttribute("date") Date date, Model model) { 
    LOG.info(date.toString()); 
    return "anotherPage"; 
} 
+0

ちょうど私が思う@Rajesh RequestParamの代わりModelAttribute – Rajesh

+0

を使用します" – LoganMzz

答えて

0

春は自動的にシンプルなデータをバインドしますa(Strings、int、floatなど) をコマンドBeanのプロパティに変換します。しかし、例えば のデータがより複雑な場合、 のフォーマットを "Jan 20,1990"形式で取得し、Springにバインド操作の一部として Dateオブジェクトを作成させたい場合はどうなりますか?この作品、 あなたがバインディングプロセスの 一環としてのPropertyEditorインスタンスを使用するように春のWeb MVCに通知する必要がある場合:

@InitBinder 
public void bindingPreparation(WebDataBinder binder) { 
    DateFormat dateFormat = new SimpleDateFormat("MMM d, YYYY"); 
    CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat, true); 
    binder.registerCustomEditor(Date.class, orderDateEditor); 
} 

今、あなたは「MMM Dとしてフォーマットされたあなたの方法で直接解析された日付を取得することができます、YYYY:ビューAPI "ベースのソリューション(JSTL +モデル)が要求されている」

@RequestMapping(value = "/getAllOnDate", method = RequestMethod.POST) 
public String getAllReservationsForRestaurantOnDate(@ModelAttribute("date") Date date, Model model) { 
    LOG.info(date.toString()); 
    return "anotherPage"; 
} 
関連する問題