양식에 DatePicker
(org.apache.wicket.extensions.yui.calendar.DatePicker
— Javadoc)을 사용하고 있습니다. 양식은 두 개의 필드로 구성됩니다. 첫 번째 필드는 드롭 다운이고 두 번째 필드는 첫 번째 필드를 기반으로 동적으로 변경됩니다. "텍스트"를 선택하면 텍스트 상자가 나타납니다. "목록"을 선택하면 드롭 다운 메뉴가 나타납니다. '날짜'를 선택하면 날짜 선택 도구 및 관련 필드가 나타납니다.DateTextField가 숨겨져있을 때 어떻게 DatePicker 아이콘을 숨길 수 있습니까?
DateTextField dateField = new DateTextField("dateField", // ...
DatePicker datePicker = new DatePicker();
dateField.add(datePicker);
fieldOne.add(new OnChangeAjaxBehavior() {
protected void onUpdate(AjaxRequestTarget target) {
if (fieldOne.equalsIgnoreCase("list"))
{
dateField.setVisible(false);
// datePicker.setVisible(false); // This line is impossible
listField.setVisible(true);
textField.setVisible(false);
}
else if { /* similar visibility settings for dates and text */ }
}
});
양식은 현재 날짜 선택에 을 변경 제대로 작동 :
여기에 내 현재 코드의 단순화 된 버전입니다. 날짜가 선택되고 사용자가 다른 것을 선택하면 문제가 발생합니다. 필드이 사라지지만 날짜 피커이 화면에 남아 있습니다. 불행히도 setVisible()
메서드 또는 이와 동등한 메서드가없는 것 같습니다. 사실 Wicket도 아닙니다. Component
.
함께 표시하거나 사라지게하려면 어떻게해야합니까? 피커의 가시성을 직접 설정할 수없는 경우 필드의 가시성에 어떻게 든 연결시킬 수 있습니까?
나는이 작업을 수행하려고했습니다 (나는 그것을 함께 플레이를 계속하고 있습니다)하지만 실제로'WebMarkupContainer' 내부의 선택기를 얻을 수 없습니다. Picker는 내가 생성 한 소스가 아닌 생성 된 HTML에만 존재합니다. 그래서 컨테이너에서 모든 것을 감싸려고하면 필드 나 피커가 나타나지 않습니다. – Pops
아, 마침내이 작업을했습니다. 내가 필요한'setVisible()'호출 중 하나를 놓쳤다. – Pops
좋은지 나쁜지 잘 모르겠습니다 만, 자주하는 일로'isVisible()'을 오버라이드하는 것입니다. 따라서 구성 요소를 스캔하고 논리 표시/숨기기 방법을 쉽게 찾을 수 있습니다. – biziclop