Wicket CheckBox 更改其他组件的可见性

我有一个 Wicket 7 CheckBox 和一个隐藏的 DateTextField。当我单击复选框时,我希望出现 DateTextField,反之亦然。为此,我在 WebMarkUpContainer 中添加了 DateTextField。如果可能的话,我不想使用 Ajax。问题是 WebMarkUpContainer 总是隐藏的。一般来说,我的代码如下:


class ResultsPanel extends Panel{


private static final class ResultsPage {


final DateTextField startDate = new DateTextField("startDate",  new DateTextFieldConfig().withLanguage("el");


final CheckBox checkBox = new CheckBox("checkBox");


final WebMarkupContainer wmc = new WebMarkupContainer("wmc");


   // bla bla bla


public Results(String id, CompoundPropertyModel propertyModel) {


            super(id, propertyModel);            

            add(checkBox);  

            wmc.setOutputMarkupPlaceholderTag(true);                     

            wmc.add(startDate);

            add(wmc.setVisible(false));  

            }


public ResultsPanel(String id){

  super(id);   

  add(new ResultsPage("resultsPage", new CompoundPropertyModel()));

}


}


千巷猫影
浏览 265回答 1
1回答

噜噜哒

如果您在单击复选框时不需要触发任何服务器端代码,您可以考虑使用一些简单的 JavaScript 代码来隐藏/显示 DateTextField。可以使用 JavaScriptHeaderItem 将此代码附加到复选框。您可以在用户指南中找到更多详细信息。更新在 Wicket 7.x 中你可以试试    new CheckBox("id", model) {     protected boolean wantOnSelectionChangedNotifications() {     return true; }     protected void onSelectionChanged(Boolean newSelection) {     // do something, page will be rerendered; } }; 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java