Spring mvc 未执行PropertyEditorSupport方法
我想使用SpringMVC将json转换为一个对象,比如Spring mvc 未执行PropertyEditorSupport方法,spring-mvc,Spring Mvc,我想使用SpringMVC将json转换为一个对象,比如 @RequestMapping(value = "searchPolygonArea/", method = RequestMethod.GET,params = {"region != null"}) public @ResponseBody ResultBean <List <Spot>> searchPolygonArea(@ModelAttribute (value="regionModel")
@RequestMapping(value = "searchPolygonArea/", method = RequestMethod.GET,params = {"region != null"})
public @ResponseBody ResultBean <List <Spot>> searchPolygonArea(@ModelAttribute (value="regionModel") Region regions,@RequestParam(value="region") Region region){
return new ResultBean <List<Spot>> ();
}
@InitBinder(value="regionModel")
public void initBinder(WebDataBinder dataBinder,@RequestParam(value="region") final String regionParams){//,
dataBinder.registerCustomEditor (Region.class, new PropertyEditorSupport (){
Region value ;
@Override
public Object getValue () {
return new Region ();
}
@Override
public void setAsText (String text) throws IllegalArgumentException {
System.out.println (text);
try {
value = JSONUtils.json2Obj (text, Region.class);
}
catch (Exception e) {
e.printStackTrace();
}
}
});
}
但是setAsText和getValue没有执行,我不知道为什么。你检查过你的控件是否在initbinder中吗?是的,它执行registerCustomEditor,但是@requestmapping不执行getValue和setAsText方法PropertyEditor只有在从请求参数转换到模型对象的字段时才会被校准,映射请求参数时不会调用它。如果您想写一个转换器,在本例中是一个字符串到区域的转换器,并将其注册到ConversionService。