Springmvcでよく使われるinitDatabinder処理時間

1736 ワード

フロントエンドから送信された時間文字列と、バックエンドからフロントエンドに送信された文字列に時間パラメータをバインドします.
import org.springframework.util.StringUtils;

public class DateConvertEditor extends PropertyEditorSupport {
    private SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd" ); 
    public void setAsText(String text) throws IllegalArgumentException {
         if (StringUtils.hasText(text)) {
             try {
                 if (text.indexOf(":" ) == -1 && text.length() == 10) {
                    setValue( this.dateFormat .parse(text));
                } else if (text.indexOf(":") > 0 && text.length() == 19) {
                    setValue( this.datetimeFormat .parse(text));
                } else if (text.indexOf(":") > 0 && text.length() == 21) {
                    text = text.replace( ".0", "");
                    setValue( this.datetimeFormat .parse(text));
                } else {
                     throw new IllegalArgumentException(
                             "Could not parse date, date format is error ");
                }
            } catch (ParseException ex) {
                IllegalArgumentException iae = new IllegalArgumentException(
                         "Could not parse date: " + ex.getMessage());
                iae.initCause(ex);
                throw iae;
            }
        } else {
            setValue( null);
        }
    }
}