0
点赞
收藏
分享

微信扫一扫

SpringMvc-PropertyEditor接口和@InitBinder注解


注:通过InitBinder方法注册PropertyEditor,在​​@ResponseBody​​注解的方法是无效的

1.自己定义一个类,这个类实现PropertyEditor接口,其实就是实现这个接口中的setAsText和getValue

1 springmvc会调用setAsText方法将request中对应的值传递进去
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=周传雄


举报

相关推荐

0 条评论