读书人

SpringMVC传略(四) 数据绑定

发布时间: 2012-06-29 15:48:46 作者: rapoo

SpringMVC杂记(四) 数据绑定
SpringMVC杂记(四) 数据绑定

1) 使用java.beans.PropertyEditor接口
如一个表单类

public class UserInfoForm {private String username;private String password;// getter and setter ...}

在同一个包下新建一个类 UserInfoFormEditor,这个类名很重要
名字是XxxEditor, Xxx当然是指要编辑的类名字啦。
public class UserInfoFormEditor extends PropertyEditorSupport {@Overridepublic String getAsText() {UserInfoForm form = (UserInfoForm) super.getValue();return form.getUsername() + "@@" + form.getPassword();}@Overridepublic void setAsText(String text) throws IllegalArgumentException {UserInfoForm value = new UserInfoForm();String[] infos = text.split("@@");value.setUsername(infos[0]);value.setPassword(infos[1]);setValue(value);}}


2) 如果Editor类的名字不遵守上面的规范的话。 就只能可以在Controller中注册一下了。
@Controller@RequestMapping("/test")public class UserInfoController {@InitBinderpublic void initBinder(WebDataBinder binder) {binder.registerCustomEditor(UserInfoForm.class, new UserInfoFormEditor());}}


3) 如果想把Editor注册成全局性质的,而不仅仅对每一个固定的Controller起作用。
Controller类实现WebBindingInitializer接口即可。
@Controller@RequestMapping("/test")public class UserInfoController implements WebBindingInitializer {@InitBinderpublic void initBinder(WebDataBinder binder, WebRequest request) {binder.registerCustomEditor(UserInfoForm.class, new UserInfoFormEditor());}}


4) org.springframework.core.convert.converter.Converter接口。
这个接口在Spring3.x时代才加入进来。 但是用法确实简单明了。

首先实现
public class String2UserInfoFormConverter implements Converter<String, UserInfoForm> {public UserInfoForm convert(String source) {UserInfoForm form = new UserInfoForm();form.setUsername(source.split("@@")[0]);form.setPassword(source.split("@@")[1]);return form;}}


再在spring mvc的配置文件添加以下内容,就可完成全局配置。 特别推荐这种方式。
<mvc:annotation-driven conversion-service="conversion-service" /><bean id="conversion-service"/></list></property></bean>


5) 数据绑定异常处理。如果某些错误需要特别处理而又不在全局exceptionResolver指定的话。
可以把Controller也实现为一个import org.springframework.web.servlet.HandlerExceptionResolver

读书人网 >VC/MFC

热点推荐