Wicket CheckBox изменить видимость другого компонента - PullRequest
0 голосов
/ 23 января 2019

У меня есть чекбокс Wicket 7 и скрытый DateTextField.Когда я нажимаю на CheckBox, я хочу, чтобы появилось поле DateTextField, и наоборот.По этой причине я добавил DateTextField в WebMarkUpContainer.Если возможно, я не хочу использовать 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 голосов
/ 23 января 2019

Если вам не нужно запускать какой-либо код на стороне сервера при нажатии на флажок, вы можете использовать некоторый простой код 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; 
} }; 
...