Как скрыть WebMarkUpContainer, проверяющий AjaxCheckBox в Wicket - PullRequest
0 голосов
/ 31 января 2019

ОК, в основном у меня есть WebMarkUpContainer, который содержит компонент DateTextField, и я хочу сделать его видимым только при проверке AjaxCheckBox.

В общем случае мой код:

private static final class Results extends BootstrapForm<ResultsModel>
    {

 final AjaxCheckBox isExamsSuccess = new AjaxCheckBox("isExamsSuccess") {           

            private static final long serialVersionUID = 1L;

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                updateModel();
                toggleStep(target);                 
            }
        };          

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

        final DateTextField startDate = new DateTextField("startDate",
                    new DateTextFieldConfig()
                       .autoClose(true).withFormat("dd/MM/yyyy")
                       .withLanguage("el").withEndDate(new DateTime()));


public Results(String id, CompoundPropertyModel<ResultsModel> propertyModel)
        {

            super(id, propertyModel);           
            add(isExamsSuccess);
            wmc.add(startDate);
            add(wmc);

  protected void toggleStep(AjaxRequestTarget target) {
            if(isExamsSuccess.getModelObject() == true){
                isExamsSuccess.setModelObject(true);
                wmc.setVisible(true);
                target.add(wmc);
            }                        
            else {               
                wmc.setVisible(false);                
                target.add(wmc);
            }            
        }
}

Iбыл бы очень признателен за помощь

1 Ответ

0 голосов
/ 31 января 2019

Ваш код выглядит хорошо!Вам просто нужно установить начальную видимость wmc в зависимости от isExamsSuccess:

wmc = new WebMarkupContainer("wmc") {
   @Override public void onConfigure() {
     super.onConfigure();
     setVisible(isExamsSuccess.getModelObject());
   }
}
wmc.setOutputMarkupPlaceholderTag(true);

Кроме того, вам нужно вызвать setOutputMarkupPlaceholderTag(true), потому что Wicket должна быть в состоянии найти элемент HTML, чтобы повернутьвидимость от off до on.

...