我有一个代表提交的表单对象的命令对象。如果表单输入字段中的值为空,我希望它在命令对象中为null
。
我读了一个显示使用InitBinder
我给了那个镜头,但initBinder
方法永远不会被调用。
我的控制器
package com.example;
import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import com.example.MyDTO;
@Controller
public class MyControllerImpl implements MyController {
@InitBinder("myControllerImpl")
public void initBinder(WebDataBinder binder) {
System.out.println("init binder");
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
@Override
public String someAction( MyDTO someDTO ) {
System.out.println(someDTO);
// Do something with DTO. I want blank values to be null here
return "somePage;
}
}
DTO
package com.example;
public class MyDTO {
private String name;
public String getName() {
return name;
}
public String setName() {
return name;
}
}
我还尝试将类名添加到InitBinder
注释
@InitBinder("myControllerImpl")
但它不起作用。
我缺少什么来调用init绑定器?
我正在使用Java 6和Spring 3
答案 0 :(得分:1)
您需要将@ControllerAdvice
添加到控制器类。
答案 1 :(得分:0)
问题是我在控制器上使用了一个界面。该实现由Spring AOP代理。为了实现这一点,我必须在界面上添加以下方法:
@InitBinder
void initBinder(WebDataBinder binder);
然后在实施中我
@Override
public void initBinder(WebDataBinder binder) {
System.out.println("init binder!");
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}