因前台jsp页面向后台传值包含复杂类型 (Timestamp version),参考一些文档自定义了一个VersionEditor,代码为:
public class VersionEditor extends PropertyEditorSupport {
public VersionEditor() {
super();
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
log.debug(this.toString());
setValue(convertFromText(text));
}
@Override
public String getAsText() {
String time = "";
Object objTime = getValue();
if (objTime != null) {
if (objTime instanceof Timestamp) {
Timestamp ts = (Timestamp) objTime;
time = getAsText(ts);
}
}
return time;
}
public static String getAsText(Timestamp objTime) {
String time = "";
if (objTime != null) {
time = objTime.toString();
}
return time;
}
private static Timestamp convertFromText(String text) throws IllegalArgumentException {
Timestamp ts = null;
//逻辑处理...
}
}
在Controller 中加入
@InitBinder
public void initBinder(WebDataBinder binder) {
log.debug("initBinder start in class:"+this.getClass().getName());
RequestContextHolder.getRequestAttributes();
// Time stamp type convert
// version convert
VersionEditor versionEditor = new VersionEditor();
binder.registerCustomEditor(Timestamp.class, versionEditor);
binder.registerCustomEditor(Timestamp.class, "version", versionEditor);
log.debug("initBind