0

我已经编写了扩展 CustomDateEditor 的 NotLenientDateEditor

public NotLenientDateEditor(DateFormat dateFormat, boolean allowEmpty, int exactDateLength) {
    super(dateFormat, allowEmpty, exactDateLength);
    dateFormat.setLenient(false);

现在我需要再添加一项功能,因为当我启用 javascript 时,日期 12.1.20asa21 不可解析,但当禁用 javascript 时,此日期可解析为 12.1.20。

你能帮我吗,如何添加不解析年份的功能包含字母

4

2 回答 2

0

这有效,但它能够文件 12.1.2a (它从这个文件 12.2.02,这是我的问题)。我以这种方式初始化 NotLenientEditor

public void initBinder(WebDataBinder binder) {
    SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
    NotLenientDateEdtor editor = new NotLenientDateEdtor(format, false, 10);
    binder.registerCustomEditor(Date.class, editor);
}
于 2012-08-05T15:38:10.140 回答
0

有了这个实现似乎工作:

package net.orique.stackoverflow.question11740273;

import java.text.DateFormat;

import org.springframework.beans.propertyeditors.CustomDateEditor;

public class NotLenientDateEditor extends CustomDateEditor {

    public NotLenientDateEditor(DateFormat dateFormat, boolean allowEmpty,
            int exactDateLength) {
        super(dateFormat, allowEmpty, exactDateLength);
        dateFormat.setLenient(false);
    }

}

类与main方法:

package net.orique.stackoverflow.question11740273;

import java.text.SimpleDateFormat;

public class Main {

    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("dd.m.yy");
        NotLenientDateEditor n = new NotLenientDateEditor(sdf, false, 7);

        n.setAsText("12.1.20"); // Ok
        n.setAsText("12.1.20asa21"); // Throws java.lang.IllegalArgumentException
    }

}

笔记:

你如何实例化NotLenientDateEditor?您为 DateFormat 设置了哪种格式?请注意构造函数参数的month7的单个数字。exactDateLength

于 2012-07-31T12:59:58.887 回答