Wicket - 使用ajax更新模型而无需验证

时间:2016-06-01 09:09:54

标签: ajax validation wicket

我有一个带有几个布局复选框的表单:“[*] A类型的项目(计数:2)”。 每个这样的复选框都附有一个链接(上面布局中的“count:2”),显示附加到相应复选框的列表中的项目数。该链接打开另一个表单,用于将项目添加到列表中。 如果用户选中此复选框,则链接将变为启用状态,并且她可以添加项目。但是,如果选中该复选框并且未添加任何项目,则在提交表单时必须显示错误。

我尝试使用AjaxCheckbox来启用/禁用链接,它工作正常,直到我在复选框中添加了验证器(以检查上述条件)。 问题是:当从复选框发送ajax请求时,调用验证器并且验证失败,因为列表中还没有项目。

在Wicket中是否有一种方法可以在组件上使用验证器,只在提交表单时使用它,而不是在发送ajax请求时使用它?换句话说,只更新模型的ajax。

我知道我可以使用在AjaxFormComponentUpdatingBehavior周期中没有调用的IFormValidator,但是我可能需要创建尽可能多的表单,因为我希望避免在表单上有复选框。

PS:抱歉没有提供图片,我的开发机器位于隔离的安全局域网中,我不能只是从那里复制文件。

1 个答案:

答案 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);
    }
  }
}