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

时间:2019-01-23 13:11:52

标签: java checkbox datepicker wicket

我有一个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()));
}

}

1 个答案:

答案 0 :(得分:0)

如果您在单击复选框时不需要触发任何服务器端代码,则可以考虑使用一些简单的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; 
} };