Wicket - 使用 ajax 更新模型而不进行验证
Wicket - Update model with ajax without validation
我有一个带有几个布局复选框的表单:“[*] A 类型的项目(计数:2)”。
每个这样的复选框都有一个 link 附加(上面布局中的 "count: 2"),显示附加到相应复选框的列表中的项目数。 link 打开另一个表单,用于将项目添加到列表中。
如果用户选中这样的复选框,link 将启用,她可以添加项目。但是,如果复选框被选中并且没有添加任何项目,则在提交表单时必须显示错误。
我尝试使用 AjaxCheckbox 来 enable/disable link 并且它工作正常,直到我将验证器添加到复选框(以检查上述条件)。
问题是:当 ajax 请求从复选框发送时,验证器被调用并且验证失败,因为列表中还没有项目。
在 Wicket 中有没有办法在组件上有一个验证器,并且只在提交表单时而不是在发送 ajax 请求时使用它?换句话说 ajax 只是更新模型。
我知道我可以使用 AjaxFormComponentUpdatingBehavior 循环中未调用的 IFormValidator,但是我可能不得不创建尽可能多的 IFormValidator,因为我想避免在表单上有复选框。
PS: 很抱歉没有提供图片,我的开发机器在一个隔离的安全局域网中,我不能只从那里复制文件。
您可以在您的表单中添加一个 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);
}
}
}
我有一个带有几个布局复选框的表单:“[*] A 类型的项目(计数:2)”。 每个这样的复选框都有一个 link 附加(上面布局中的 "count: 2"),显示附加到相应复选框的列表中的项目数。 link 打开另一个表单,用于将项目添加到列表中。 如果用户选中这样的复选框,link 将启用,她可以添加项目。但是,如果复选框被选中并且没有添加任何项目,则在提交表单时必须显示错误。
我尝试使用 AjaxCheckbox 来 enable/disable link 并且它工作正常,直到我将验证器添加到复选框(以检查上述条件)。 问题是:当 ajax 请求从复选框发送时,验证器被调用并且验证失败,因为列表中还没有项目。
在 Wicket 中有没有办法在组件上有一个验证器,并且只在提交表单时而不是在发送 ajax 请求时使用它?换句话说 ajax 只是更新模型。
我知道我可以使用 AjaxFormComponentUpdatingBehavior 循环中未调用的 IFormValidator,但是我可能不得不创建尽可能多的 IFormValidator,因为我想避免在表单上有复选框。
PS: 很抱歉没有提供图片,我的开发机器在一个隔离的安全局域网中,我不能只从那里复制文件。
您可以在您的表单中添加一个 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);
}
}
}