我有ListView和验证页面上的问题。Apache wicket:如何明确更新表单?
我有ListView,在它下面我有TextField,用户可以在其中输入值。我在我的页面上有“发布”和“草稿保存”按钮。发布是一个按钮,其中显示弹出窗口(ModalWindow),其中用户应该确认输入的数据。保存草稿未经确认即保存。两者都是SecuredAjaxLink对象。
当用户在TextField中输入数据时,它将保存在ListView中,但整个列表不会更新,因为用户应按下面的Add按钮。还行吧。
问题是,我有业务验证,其中用户输入的信息检查了一些规则。当验证失败时,所有字段(包含错误的信息)都用css突出显示。要明确地将TextField中的值添加到ListView中,我正在做
target.addComponent(form);
这是在数据进入验证之前执行的。所以所有的字段都会更新。这适用于发布按钮(具有确认ModalWindow),但不适用于没有弹出窗口的链接。据我了解,目标的生命周期有问题,但我坚持了它。
也许有人有类似的东西,或知道答案吗?
如何在不使用弹出窗口的情况下更新页面?
下面是代码:链接 草案:
add(new SecuredAjaxSubmitLink(LinkNames.savelaterLink.toString(), form,
RoleController.CONTROLLER.getAccessController()) {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
target.addComponent(form);
insert(appl, false, form, target, new MainMenu(getString("accept.application.draft.success.message")), trail, checkbox);
}
发布链接:
add(new CustomAjaxSubmitLink(LinkNames.submitLink.toString(), form,
RoleController.CONTROLLER.getAccessController()) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
target.addComponent(form);
publishPopup.show(target);
}
});
publishPopup.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
public void onClose(AjaxRequestTarget target) {
if (ApplicationInsertActionPanel.this.getSelectedAction() != null
&& ApplicationInsertActionPanel.this.getSelectedAction().equals(Action.CONFIRM)) {
insert(appl,
true,
form,
target,
new MainMenu(ApplicationInsertActionPanel.this
.getString("accept.application.publish.success.message")), trail, checkbox);
}
}
});
我添加
@Override
protected void onError(final AjaxRequestTarget target, Form<?> form)
{
super.onError(target, form);
target.addComponent(form);
到我的链接草案,但仍然页面没有完全更新。 我想这是因为目标的生命周期没有结束,就像是当我使用弹出窗口结束。弹出式窗口打开“新页面”,旧的目标可以更新,但是当我不使用弹出窗口时,页面保持原样。 所以现在我想一些解决办法来结束生命周期的目标。我在想没有任何功能的透明弹出式窗口,但真的很脏解决方案。
任何想法?谢谢! }
你能展示一些代码吗? – bert
已编辑的第一篇文章。 – psisoyev