2014-04-08 5 views
0

날짜 필드 2 개와 버튼 1 개가있는 양식이 있습니다. 날짜가 유효하지 않은 경우 버튼을 비활성화하고 사용자 유형이 필드에 날짜를 입력 할 때 역동적으로 활성화해야합니다. 페이지의 단추를 어떻게 새로 고칠 수 있습니까?wicket 버튼 동적 업데이트 사용/사용 안함

아래 코드는 작동하지 않습니다. 페이지에서 요소를 새로 고치는 작업을해야한다는 것을 알고 있지만 어떻게 처리해야할지 모르겠다.

private void initFields() { 
    startDate = new DateTextField("startDate", "Дата начала периода", null, NSDConsts.DATE_FORMAT); 
    startDate.setOutputMarkupId(true); 
    startDate.addSubmitter(); 
    startDate.getFormComponent().add(new AjaxFormComponentUpdatingBehavior("onchange") { 
     @Override 
     protected void onUpdate(AjaxRequestTarget paramAjaxRequestTarget) { 
      startDateValue = startDate.getDate(); 
      exportButtonVisibility(); 
     } 
    }); 
    form.add(startDate); 

    endDate = new DateTextField("endDate", "Дата окончания периода", null, NSDConsts.DATE_FORMAT); 
    endDate.setOutputMarkupId(true); 
    endDate.addSubmitter(); 
    endDate.getFormComponent().add(new AjaxFormComponentUpdatingBehavior("onchange") { 
     @Override 
     protected void onUpdate(AjaxRequestTarget paramAjaxRequestTarget) { 
      endDateValue = endDate.getDate(); 
      exportButtonVisibility(); 
     } 
    }); 
    form.add(endDate); 

    exportButton = new CinimexAjaxLink("createButton", "Создать", new NRDTextLinkDecorator()) { 
     @Override 
     public void onClick(AjaxRequestTarget target) { 
      if (dateTextFieldCheck(startDate, endDate)) { 
       ((ActionsAuditManager) getManagerFacade().getManager(ActionsAuditManager.BEAN_NAME)).createNote(AuditActions.CALCULATE_DETALIZATION, "Отчет успешно сформирован", null, null); 
       download.initiate(target); 
      } else { 
       String message = "Введена неверная дата"; 
       if (startDate.getString().compareTo(endDate.getString()) > 0) { 
        message = "Дата начала периода не может быть больше даты окончания"; 
       } 
       getDialogWindow().showInfo(message); 
      } 
     } 
    }; 
    exportButton.add(download); 
    form.add(exportButton); 
} 

private void exportButtonVisibility() { 
    if (dateTextFieldCheck(startDate, endDate)) { 
     exportButton.setEnabled(true); 
    } else { 
     exportButton.setEnabled(false); 
    } 
} 

답변

3

날짜 변경 후 내보내기를 업데이트하려면 Wicket에 알려야합니다. 두 날짜 필드의 업데이트 방법을 수정하십시오.

@Override 
    protected void onUpdate(AjaxRequestTarget paramAjaxRequestTarget) { 
     endDateValue = endDate.getDate(); 
     exportButtonVisibility(); 
     paramAjaxRequestTarget.add(exportButton); // Add this line 
    } 
+0

감사합니다. 완벽하게 작동합니다. – heyDude

관련 문제