Java 如果Wicket表单组件';s设为“s”;“必需”吗;?
编辑:Java 如果Wicket表单组件';s设为“s”;“必需”吗;?,java,ajax,wicket,Java,Ajax,Wicket,编辑: 这个问题最初是关于复选框的,但我在下拉列表中得到了相同的行为。守则: productInput = new DropDownChoice<String>("productInput", new PropertyModel<String>(this, "productSelection"), prod
这个问题最初是关于复选框的,但我在下拉列表中得到了相同的行为。守则:
productInput = new DropDownChoice<String>("productInput",
new PropertyModel<String>(this, "productSelection"),
products);
productInput.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target)
{
if (productSelection == null) // Breakpoint is set on this line
{
updateDropdownsAfterFieldDisabled(1, target);
}
else
{
updateDropdownsAfterFieldEnabled(1, target);
}
}
});
我已经测试了这段代码——好的,这是一个简化版本的真实代码——并且它按照预期工作。但是add-in
economyBox.setRequired(true)代码>和框停止动态更新。有没有一种方法可以在不破坏“链接复选框”行为的情况下添加验证?我看不出这里有任何错误,除非您有
target.addComponent(standardBox);
我想你想去的地方
target.addComponent(economyBox);
验证应该与OnChangeAjaxBehavior
进行互操作。我很确定我已经在某些形式中使用了这两种方法,尽管我认为不是用复选框
我不确定使用economyBox.setRequired(true)进行验证的想法代码>在这里是有意义的。在您的模型中,您正在提供值,所有复选框的默认值都为false,因此在这个上下文中没有真正的方法可以忽略任何内容
更合理的验证可能是必须选中某个内容,但这需要为整个表单或包含所有复选框的表单组件定义不同的验证器
编辑:
根据您关于在DropDownChoice
中看到相同问题的编辑,我做了一个实验
有一个使用DropDownChoice
组件的ajaxFormComponentUpdateBehavior
示例。我下载了这个的代码,补充道
models.setRequired(true);
makes.setRequired(true);
add(new FeedbackPanel("messages"));
当然,还为反馈面板添加了标记
它验证了所需字段,并根据make下拉列表的值继续更新model下拉列表
由于这对我来说很好,我建议您尝试同样的方法,看看它是否有效,然后与您的代码进行比较。除了您的代码之外,我看不出有任何错误
target.addComponent(standardBox);
我想你想去的地方
target.addComponent(economyBox);
验证应该与OnChangeAjaxBehavior
进行互操作。我很确定我已经在某些形式中使用了这两种方法,尽管我认为不是用复选框
我不确定使用economyBox.setRequired(true)进行验证的想法代码>在这里是有意义的。在您的模型中,您正在提供值,所有复选框的默认值都为false,因此在这个上下文中没有真正的方法可以忽略任何内容
更合理的验证可能是必须选中某个内容,但这需要为整个表单或包含所有复选框的表单组件定义不同的验证器
编辑:
根据您关于在DropDownChoice
中看到相同问题的编辑,我做了一个实验
有一个使用DropDownChoice
组件的ajaxFormComponentUpdateBehavior
示例。我下载了这个的代码,补充道
models.setRequired(true);
makes.setRequired(true);
add(new FeedbackPanel("messages"));
当然,还为反馈面板添加了标记
它验证了所需字段,并根据make下拉列表的值继续更新model下拉列表
由于这对我来说效果很好,我建议您尝试同样的方法,看看它是否有效,然后与您的代码进行比较。它以何种方式停止工作?@Don它不再受其他复选框状态的影响。它以何种方式停止工作?@Don它不再受其他复选框状态的影响。您的打字错误是正确的。我很聪明,用Eclipse的重构工具创建了这个示例,但后来我为了缩短文章而复制/粘贴,破坏了它。现在已经修复了。除了输入错误,我发现对于带有setRequired(true)
的复选框,验证器不接受false
。也许我遗漏了一些关于PropertyModel
如何工作/将事物联系在一起的基本知识?事实上,我同意更好的验证器应该是“确保某些东西被检查”,但我也不知道如何使其工作,我想我应该从一个更简单的问题开始。这里有一些示例代码可能有助于理解如何进行验证。是的,我已经玩过AbstractValidator
一些;你的编辑很有趣,有点伤感,因为这就是我开始使用的代码。我再看看。我想我现在会接受这个,祝贺《无名英雄》(一周后)。你的打字错误是对的。我很聪明,用Eclipse的重构工具创建了这个示例,但后来我为了缩短文章而复制/粘贴,破坏了它。现在已经修复了。除了输入错误,我发现对于带有setRequired(true)
的复选框,验证器不接受false
。也许我遗漏了一些关于PropertyModel
如何工作/将事物联系在一起的基本知识?事实上,我同意更好的验证器应该是“确保某些东西被检查”,但我也不知道如何使其工作,我想我应该从一个更简单的问题开始。这里有一些示例代码可能有助于理解如何进行验证。是的,我已经玩过AbstractValidator
一些;你的编辑很有趣,有点伤感,因为这就是我开始使用的代码。我再看看。我想我现在会接受这个,祝贺无名英雄(一周后)。