我需要创建某种按钮,链接或任何可以用日期填充字段的内容。
到目前为止,我尝试实现一个Link
,该点击后将用所需的日期填充我的DateTextField
。
外观如下:
我添加了9个可点击的链接,这些链接将填充 DateTime From 和 DateTime To 。
现在是问题所在。首先,我尝试使其工作如下:
logSearchForm.add(getNewLinkDateAndHours(logSearchForm, dateLast1Hour.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")), dateLast1Hour.format(DateTimeFormatter.ofPattern("HH:mm")),LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")),"last1Hour"));
这将添加一个链接并调用一个方法。
private Link<Void> getNewLinkDateAndHours (Form<BgwElasticSearchFields> logSearchForm, String from, String to,
String fromTime, String toTime, String id) {
return new Link<Void>(id, new PropertyModel<>(searchFields, id)){
@Override
public void onClick() {
logSearchForm.get("dtFrom").setDefaultModel(Model.of(from));
logSearchForm.get("dtTo").setDefaultModel(Model.of(to));
logSearchForm.get("timeFrom").setDefaultModel(Model.of(fromTime));
logSearchForm.get("timeTo").setDefaultModel(Model.of(toTime));
}
};
}
但是在此实现中出现了两个问题:1)重新加载并清除了所有字段2)填充了必需的日期字段,但是当我按下“搜索”按钮时,它不会解析日期,而是尝试使用空日期进行搜索。
所以我尝试使它像这样:
private Link<Void> getNewLinkDate (Form<BgwElasticSearchFields> logSearchForm, LocalDate from, LocalDate to, String id) {
return new Link<Void>(id, new PropertyModel<>(searchFields, id)){
@Override
public void onClick() {
Date dateFrom = Date.from(from.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date dateTo = Date.from(to.atStartOfDay(ZoneId.systemDefault()).toInstant());
searchFields.setDtFrom(dateFrom);
searchFields.setDtTo(dateTo);
}
};
}
此功能效果更好一点,它可以正确设置日期,搜索按钮可以很好地插入日期,但是无论何时我单击链接,它仍然重新加载了整个页面,并且没有保存任何填充字段。我尝试捕获并保存插入的信息,但没有成功。
在理想程序中,它看起来像这样:我填写 Legal Code ,设置 Bic ,然后单击昨天按钮。 Page不会重新加载或重新加载,保持我插入的法律代码和Bic值,我点击了搜索按钮,一切正常。