我有一个带有几个布局复选框的表单:“[*] A类型的项目(计数:2)”。 每个这样的复选框都附有一个链接(上面布局中的“count:2”),显示附加到相应复选框的列表中的项目数。该链接打开另一个表单,用于将项目添加到列表中。 如果用户选中此复选框,则链接将变为启用状态,并且她可以添加项目。但是,如果选中该复选框并且未添加任何项目,则在提交表单时必须显示错误。
我尝试使用AjaxCheckbox来启用/禁用链接,它工作正常,直到我在复选框中添加了验证器(以检查上述条件)。 问题是:当从复选框发送ajax请求时,调用验证器并且验证失败,因为列表中还没有项目。
在Wicket中是否有一种方法可以在组件上使用验证器,只在提交表单时使用它,而不是在发送ajax请求时使用它?换句话说,只更新模型的ajax。
我知道我可以使用在AjaxFormComponentUpdatingBehavior周期中没有调用的IFormValidator,但是我可能需要创建尽可能多的表单,因为我希望避免在表单上有复选框。
PS:抱歉没有提供图片,我的开发机器位于隔离的安全局域网中,我不能只是从那里复制文件。
答案 0 :(得分:0)
您可以在表单中添加IFormValidator,只有在提交整个表单时才会调用它:
public class ItemsValidator extends AbstractFormValidator
{
@Override
public FormComponent<?>[] getDependentFormComponents()
{
return new FormComponent[]{checkbox};
}
@Override
public void validate(Form<?> form)
{
if (checkbox.getConvertedInput() && items.isEmpty())
{
error(checkbox);
}
}
}