【发布时间】:2013-07-22 18:00:14
【问题描述】:
作为我的标题,我有问题,我不明白为什么不能。所以,我有一个 Person 类、PersonPropertyEditor 类和 Controller。
这里是:
人物类:
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
PersonPropertyEditor 类:
public class PersonPropertyEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
Person person = new Person();
person.setName(text);
setValue(person);
}
}
控制器:
@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
webDataBinder.registerCustomEditor(Person.class,
new PersonPropertyEditor());
}
@RequestMapping(value = "/addPerson", method = RequestMethod.POST)
public String homePost(
@ModelAttribute("personConverted") Person personConverted) {
System.out.println(personConverted.getName());
return "redirect:/home";
}
JSP 文件:
<form action="addPerson" method="post">
<input type="text" name="personConverted" />
<input type="submit" value="Submit" />
<form>
所以,我注册了一个自定义属性编辑器,并且在控制器中,我会从字符串转换为人对象,但是我不知道为什么当我使用 ModelAttribute 时,Spring 不会调用我的自定义属性编辑器,但是如果我使用RequestParam,就可以了。
我知道我可以使用 Converter 来做到这一点,但我只是想了解为什么 Spring 不调用它,这是 Spring 的错误?
提前致谢!
【问题讨论】:
-
您是否尝试过使用 spring 表单标签?
-
不,我没有,因为我只是作为示例做的,我想从字符串转换为人。如果我使用表单标签,我将使用纯 Person 模型属性。
标签: spring spring-mvc