SpringMvc-InitBinder

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=周传雄

猜你喜欢

转载自blog.csdn.net/u011624903/article/details/86466760