我有一个包含2个日期字段和一个按钮的表单。 我需要在日期无效时创建禁用的按钮,并在用户在字段中键入日期时动态启用。如何刷新页面中的按钮?
下面的代码不起作用。我知道我必须做一些刷新页面元素的东西,但我不知道该怎么做。
private void initFields() {
startDate = new DateTextField("startDate", "Дата начала периода", null, NSDConsts.DATE_FORMAT);
startDate.setOutputMarkupId(true);
startDate.addSubmitter();
startDate.getFormComponent().add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget paramAjaxRequestTarget) {
startDateValue = startDate.getDate();
exportButtonVisibility();
}
});
form.add(startDate);
endDate = new DateTextField("endDate", "Дата окончания периода", null, NSDConsts.DATE_FORMAT);
endDate.setOutputMarkupId(true);
endDate.addSubmitter();
endDate.getFormComponent().add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget paramAjaxRequestTarget) {
endDateValue = endDate.getDate();
exportButtonVisibility();
}
});
form.add(endDate);
exportButton = new CinimexAjaxLink("createButton", "Создать", new NRDTextLinkDecorator()) {
@Override
public void onClick(AjaxRequestTarget target) {
if (dateTextFieldCheck(startDate, endDate)) {
((ActionsAuditManager) getManagerFacade().getManager(ActionsAuditManager.BEAN_NAME)).createNote(AuditActions.CALCULATE_DETALIZATION, "Отчет успешно сформирован", null, null);
download.initiate(target);
} else {
String message = "Введена неверная дата";
if (startDate.getString().compareTo(endDate.getString()) > 0) {
message = "Дата начала периода не может быть больше даты окончания";
}
getDialogWindow().showInfo(message);
}
}
};
exportButton.add(download);
form.add(exportButton);
}
private void exportButtonVisibility () {
if (dateTextFieldCheck(startDate, endDate)) {
exportButton.setEnabled(true);
} else {
exportButton.setEnabled(false);
}
}
答案 0 :(得分:3)
您需要告知Wicket在更改日期后更新导出;所以修改两个日期字段中的更新方法:
@Override
protected void onUpdate(AjaxRequestTarget paramAjaxRequestTarget) {
endDateValue = endDate.getDate();
exportButtonVisibility();
paramAjaxRequestTarget.add(exportButton); // Add this line
}