Spring mvc 未执行PropertyEditorSupport方法

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")

我想使用SpringMVC将json转换为一个对象,比如

 @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。