wicket ajax隐藏/取消隐藏无提交表单的可重复使用面板

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

我准备了一个可重复使用的面板,并将其添加到我的页面中。 我的页面表单中有两个下拉选项。 我正在使用来自 两个DDC工作正常(更改一个的值,然后隐藏/取消隐藏另一个。 但它在我的面板上不起作用。 即时通讯使用:

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