Когда я ввожу 00/00/0000 в фильтр диапазона дат (до и с даты) на веб-странице, он сохраняется как 11/30/0002.Значение даты: при вводе 00/00/0000 сохраняет как 11/30/0002
Я пытаюсь использовать setLenient(false)
, но не повезло. Вот часть кода. Надеюсь, поможет. Я включаю код веб-страницы, который принимает значения и код из бэк-компонента.
XHTML код страницы:
<h:panelGroup layout="block" styleClass="myWorkDate">
<h:commandLink action="#{myFollowupBean.startRangeFilter}" id="lnkDateRange" value="#{myFollowupBean.rangeFilter.display}" />
</h:panelGroup>
MyFollowUpBean.java: Bean файл
код в бэк-боба. Диалоговое окно появится для фильтра диапазона дат. Когда я вхожу в нуль, это экономит 11/30/0002 и обрабатывает запрос вместо выдачи ошибки RangeFilterVO - класс модели для дат
public void startRangeFilter() {
Command saveCommand = new Command() {
@Override
public String execute(Object returnObject) {
RangeFilterVO vo = (RangeFilterVO)returnObject;
rangeFilter.setFromDate(vo.getFromDate());
rangeFilter.setToDate(vo.getToDate());
searchAll();
fetch();
return null;
}
};
CalendarRangeFilterDialog dialog = new CalendarRangeFilterDialog();
dialog.setWidth(300);
try {
RangeFilterVO param = (RangeFilterVO) BeanUtils
.cloneBean(rangeFilter);
dialog.setVo(param);
} catch (IllegalAccessException | InstantiationException
| InvocationTargetException | NoSuchMethodException e) {
}
DialogFrame.displayDialog(dialog, saveCommand);
}
DateTimeConverter.java:
public static String getDatePattern(){
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, FacesUtils.getLocale());
String datePattern = ((SimpleDateFormat) dateFormat).toPattern();
Date myDate;
try {
if(myDate == dateFormat.parse(datePattern)){
if (datePattern.indexOf("MM") == -1){
datePattern = StringUtils.replace(datePattern, "M", "MM");
}
if (datePattern.indexOf("dd") == -1){
datePattern = StringUtils.replace(datePattern, "d", "dd");
}
if (datePattern.indexOf("yyyy") == -1){
datePattern = StringUtils.replace(datePattern, "yy", "yyyy");
}
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return datePattern;
}
Может кто-нибудь, пожалуйста, объясните мне больше об этом?
Покажите нам свой код. – SJuan76
В качестве побочного примечания, вы отфильтровываете даты до того, что это настоящая проблема? :) –
вы понимаете, что 00/00/0000 на самом деле не дата, не так ли? – njzk2