1.自己定义一个类,这个类实现PropertyEditor接口,其实就是实现这个接口中的setAsText和getValue
–1.1 springmvc会调用setAsText方法将request中对应的值穿进去
–1.2 springmvc会调用getValue方法,将拿到的值赋值到controller中的form实体类中
下面实例显示的是无论前台传递什么参数,最终User的name都是"小刚"
public class MyStringPropertyEditor implements PropertyEditor{
@Override
public Object getValue() {
return "小刚";
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
System.out.println("request中传递过来的值:"+text);
}
//省略其他Override方法
}
controller
@Controller
@RequestMapping("initbinder")
public class Controller {
@InitBinder
public void aa(WebDataBinder binder) {
MyStringPropertyEditor sdf=new MyStringPropertyEditor();
//表示User121中如果是String类型,就用MyStringPropertyEditor属性编辑器
binder.registerCustomEditor(String.class, sdf);
}
@ResponseBody
@RequestMapping("test")
public String aa(User121 user) {
//无论URL传递什么,此处都会打印"小刚"
System.out.println("controller:"+user.getName());
return "GG";
}
}
URL中虽然写的是周传雄,但是进入到controller中,依然变成了小刚
http://localhost:8080/initbinder/test?name=周传雄