spring MVC之用表单控制器处理表单(五)

spring MVC之用表单控制器处理表单(五)

----------

接上一篇

绑定定制类型的属性

提交表单时,SimpleFormController可以帮助你将表单域的值绑定到命令对象的同名属性上。然而, 对于定制类型的属性,SimpleFormController无法对它们进行转换,除非你为它们指定相应的属性编辑器
例如:
运动类型的选择框只提交选中的运动类型ID。你必须通过属性编辑器将这个ID转换成SportType对象。
我们创建SportTypeEditor类,将运动类型ID转换成SportType对象。这个属性编辑器需要ReservationService来执行查找。
package com.apress.springrecipes.court.domain;
...
import java.beans.PropertyEditorSupport;
public class SportTypeEditor extends PropertyEditorSupport{
	private ReservationService reservationService;
	public SportTypeEditor(ReservationService reservationService){
		this.reservationService = reservationService;
	}
	public void setAsText(String text)throws IllegalArgumentException{
		int sportTypeId = Integer.parseInt(text);
		SportType sportType = reservationService.getSportType(sportTypeId);
		setValue(sportType);
	}
}
最后一步是在控制器中注册该属性编辑器。你应该在i nitBinder()方法里将它注册给ServletRequestDataBinder对象。
package com.apress.springrecipes.court.web;
...
public class ReservationFormController extends SimpleFormController{
	...
	protected void initBinder(HttpServletRequest request,
		ServletRequestDataBinder binder)throws Exception{
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		dateFormat.setLenient(false);
		binder.registerCustomEditor(date.class,new CustomDateEditor(dateFormat,true));
		binder.registerCustomEditor(SportType.class,new SportTypeEditor(reservationService));
	}
}
  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值