我在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 。 请给我解决方案。
谢谢。
答案 0 :(得分:2)
请检查是否通过放置断点或调试语句来调用它。
您的模型属性名为“obj”。但在物业中,你曾用“人”作为财产之路。
请尝试使用“obj”作为propertyPath或删除该参数并使用此签名。 registerCustomEditor(Class requiredType, PropertyEditor propertyEditor)
希望它有所帮助。
答案 1 :(得分:2)
在黑暗中狂野刺伤,是从@InitBinder
导入正确的org.springframework.web.bind.annotation
吗?