gpt4 book ai didi

java - Apache Wicket 口 : how to update model after validation error

转载 作者:行者123 更新时间:2023-12-02 03:06:59 26 4
gpt4 key购买 nike

我有带有 dateTimeField 和 ListView 的表单。ListView 看起来像这样:

final ListView<String> countryView = new ListView<String>("country", model.<List<String>>bind("country")) {
@Override
protected void populateItem(final ListItem<String> item) {
final String country = item.getModelObject();
item.add(new ValidationDisplayableLabel("country", country, new String[] { modelPath }));
item.add(new AjaxLink("deleteLink") {
@Override
public void onClick(AjaxRequestTarget target) {
model.getObject().getCountry().remove(country);
if (issPeriod) {
addButton.setVisible(true);
countryTextField.setVisible(true);
findButton.setVisible(true);
}
if (target != null)
target.addComponent(rowPanel);
}
});
}
};
countryTextField = new ValidationDisplayableTextField("countryCodeInput", model.bind("oneCountry"), "job.country.value");

**countryView.setReuseItems(true);**
rowPanel.add(countryView);
rowPanel.add(countryTextField);
addButton.setOutputMarkupPlaceholderTag(true);
rowPanel.add(addButton);

addButton 看起来像这样:

AjaxSubmitLink addButton = new AjaxSubmitLink(LinkNames.addCountry.toString()) {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
if (model.getObject().getOneCountry() != null)
addCountry();
if (target != null)
target.addComponent(rowPanel);
target.addComponent(form.getPage().get("feedbackPanel"));
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form)
{
onSubmit(target, form);
}
};

问题是,当我的 dateTimeField 失败时(例如,将小时数设置为 100),在countryTextField 中输入国家/地区代码,然后按 addButton,它会在反馈面板中显示验证消息,该小时范围不正确,但不要添加国家/地区。这是因为我的模型没有更新。也许有办法手动更新?所以会显示验证消息,但国家 ListView 仍然可以更新?

整个表单的提交位于其他按钮上,因此从逻辑上讲,即使 dateTimeField 中存在验证错误,添加国家/地区也是正常的。

谢谢!

附注我读过很多关于类似问题的帖子,但大多数都是用 .setReuseItems(true) 解决的,但它在我的情况下不起作用。

P.P.S Apache Wicket 口 1.4.17

最佳答案

作为此答案的更新,在 Wicket 6 中,您可以通过重写表单中的 onError() 来完成此操作:

@Override
protected void onError() {
super.onError();
this.updateFormComponentModels();
}

关于java - Apache Wicket 口 : how to update model after validation error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8879775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com