wicket ajax隐藏/取消隐藏无提交表单的可重复使用面板
我准备了一个可重复使用的面板,并将其添加到我的页面中。 我的页面表单中有两个下拉选项。 我正在使用来自 两个DDC工作正常(更改一个的值,然后隐藏/取消隐藏另一个。 但它在我的面板上不起作用。 即时通讯使用:wicket ajax隐藏/取消隐藏无提交表单的可重复使用面板,ajax,wicket,panel,behavior,Ajax,Wicket,Panel,Behavior,我准备了一个可重复使用的面板,并将其添加到我的页面中。 我的页面表单中有两个下拉选项。 我正在使用来自 两个DDC工作正常(更改一个的值,然后隐藏/取消隐藏另一个。 但它在我的面板上不起作用。 即时通讯使用: private final MyPanel panel1 = new MyPanel ("MyPanel"); panel1.setOutputMarkupPlaceholderTag(true); …在DDC1 ajax行为方法中: onUpdate(AjaxRequestTarg
private final MyPanel panel1 = new MyPanel ("MyPanel");
panel1.setOutputMarkupPlaceholderTag(true);
…在DDC1 ajax行为方法中:
onUpdate(AjaxRequestTarget target) { ...
DDC2.setVisible(true);
panel1.setVisible(true);
}
我必须将表单提交到隐藏/取消隐藏panel1
。
在不提交表单的情况下,如何使其与DDC2的工作方式相同?您需要:
panel1.setOutputMarkupId(true);
事实上,Ajax工作并不总是需要这些,但在客户端驱动刷新时需要这些
在行为中,您需要告诉目标刷新它:
onUpdate(AjaxRequestTarget target) { ...
DDC2.setVisible(true);
panel1.setVisible(true);
target.addComponent(DDC2);
target.addComponent(panel1);
}
对!我忘了添加目标!谢谢你,唐!现在我还有两个问题。1:面板渲染后,它会自动为第二个DDC生成“选择一个”值,如果我选择了某个值,则选择“选择一个”它将引发IBehaviorListener空指针异常。2.我的面板也有多个DDC和ajax行为,当我在页面中更改DDC值时,如何重置它们?谢谢!这些听起来可能值得提出新问题,并带有相关的代码位。但一般建议是“使用模型,luke”.setOutputMarkupPlaceholderTag的附加说明:即使
可见(),也需要它将容器呈现到HTML标记
返回false
。否则,您将无法在以后使用Ajax使其可见,因为客户端无法确定生成的HTML片段应放在DOM中的哪个位置。因此@Celia在您的情况下使用它是必不可少的。我需要这两个选项,setOutputMarkupPlaceholderTag(true)
和setOutputMarkupId(true)
以便能够显示和隐藏。
onUpdate(AjaxRequestTarget target) { ...
DDC2.setVisible(true);
panel1.setVisible(true);
target.addComponent(DDC2);
target.addComponent(panel1);
}