使用java.sql.Date时将Date设置为null

时间:2017-03-06 22:09:57

标签: java spring

我正在尝试将日期插入到数据库中,而我正在使用java.sql.Date,但是当用户提交表单时我遇到的问题是Null值。根据某些限制,我只允许使用java.sql.Date而不是util.Date。

实体

tzname

控制器

time.tzname

1 个答案:

答案 0 :(得分:0)

注册您自己的自定义编辑器。

public class SqlDateEditor extends PropertyEditorSupport {
    private DateFormat dateFormat;

    public SqlDateEditor (final DateFormat dateFormat)
    {
      this.dateFormat = dateFormat;
    }

    @Override
    public void setAsText(String text) {
        try {
            setValue(new java.sql.Date(this.dateformat.parse(text).getTime())
        } catch (ParseException e) {
            throw new IllegalArgumentException("Could not parse date: " + e.getMessage());
        }
    }

    @Override
    public String getAsText() {
        java.sql.Date value = (java.sql.Date) getValue();
        return (value != null ? this.dateFormat.format(value) : "");
    }
}

在你的控制器上:

@InitBinder
public void initBinder(final WebDataBinder binder) {
    binder.registerCustomEditor(java.sql.Date.class, new SqlDateEditor(new SimpleDateFormat("dd/MM/yyyy")));
}