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 { @Override public String getAsText() { UserInfoForm form = (UserInfoForm) super.getValue(); return form.getUsername() + "@@" + form.getPassword(); } @Override public 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 { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(UserInfoForm.class, new UserInfoFormEditor()); } }
3)如果想把Editor注册成全局性质的,而不仅仅对每一个固定的Controller起作用。
Controller类实现WebBindingInitializer接口即可。
@Controller @RequestMapping("/test") public class UserInfoController implements WebBindingInitializer { @InitBinder public 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; } }
再在springmvc的配置文件添加以下内容,就可完成全局配置。特别推荐这种方式。
<mvc:annotation-driven conversion-service="conversion-service" /> <bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="com.wicresoft.jpo.demo.converter.String2UserInfoFormConverter" /> </list> </property> </bean>
5)数据绑定异常处理。如果某些错误需要特别处理而又不在全局exceptionResolver指定的话。
可以把Controller也实现为一个importorg.springframework.web.servlet.HandlerExceptionResolver
相关推荐
yangkang 2020-11-09
lbyd0 2020-11-17
sushuanglei 2020-11-12
85477104 2020-11-17
KANSYOUKYOU 2020-11-16
wushengyong 2020-10-28
lizhengjava 2020-11-13
星月情缘 2020-11-13
huangxiaoyun00 2020-11-13
luyong0 2020-11-08
腾讯soso团队 2020-11-06
Apsaravod 2020-11-05
PeterChangyb 2020-11-05
gaobudong 2020-11-04
wwwjun 2020-11-02
gyunwh 2020-11-02
EchoYY 2020-10-31
dingyahui 2020-10-30