我编写了NotLenientDateEditor,它扩展了CustomDateEditor
public NotLenientDateEditor(DateFormat dateFormat, boolean allowEmpty, int exactDateLength) {
super(dateFormat, allowEmpty, exactDateLength);
dateFormat.setLenient(false);
现在我需要添加一个功能,因为当我启用了javascript时,Date 12.1.20asa21不可解析,但是当禁用javascript时,此日期可解析为12.1.20。
你可以帮助我,如何添加不解析年份的功能包含字母
答案 0 :(得分: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设置了哪种格式?请注意month
构造函数参数的7
和exactDateLength
的单个数字。
答案 1 :(得分: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);
}