InitBinder不会被调用/调用

时间:2013-08-29 04:55:22

标签: java spring spring-mvc

我在JSP页面上有单选按钮。

<form:form  modelAttribute="obj" action="save">
    <form:radiobuttons path="person" items="${List}"/>

<form:button>Save</form:button>
</form:form>

列表:人物对象列表 对象:

Class obj{
     Person person;
     getter/setters
}

在那个JSP中,我必须在选择特定的单选按钮时附加人。

在控制器端

    @RequestMapping(value = "/save", method = RequestMethod.POST)
        public String postProcess(@ModelAttribute("obj") Obj obj,BindingResult error) {

            //processing
            return "anotherJsp";
        }


     @InitBinder
     public void initBinder(WebDataBinder binder, Locale locale, HttpServletRequest request) {
    binder.registerCustomEditor(Obj.class,"person", new PropertyEditorSupport() {
        @Override
        public void setAsText(String text) {
            //processing for conversion of person object String to Person Object
            setValue(text);
        }
    });
}

这里我使用的是initbinder,因为我从jsp获取了人物对象字符串...所以我得到的绑定异常无法从String转换为Person

在initbinder中将数据绑定到modelAttribute.Hence之前调用InitBinder我会将字符串转换为Person对象。

这里的主要问题是我的 InitBinder in Not called / Invoked 。 请给我解决方案。

谢谢。

2 个答案:

答案 0 :(得分:2)

请检查是否通过放置断点或调试语句来调用它。

您的模型属性名为“obj”。但在物业中,你曾用“人”作为财产之路。

请尝试使用“obj”作为propertyPath或删除该参数并使用此签名。 registerCustomEditor(Class requiredType, PropertyEditor propertyEditor)

希望它有所帮助。

答案 1 :(得分:2)

在黑暗中狂野刺伤,是从@InitBinder导入正确的org.springframework.web.bind.annotation吗?