Я использую DatePicker
(org.apache.wicket.extensions.yui.calendar.DatePicker
- Javadoc ) в форме. Форма состоит из двух полей. Первое поле является раскрывающимся, а второе изменяется динамически в зависимости от первого. Если выбран «текст», появится текстовое поле; если выбран «список», появляется выпадающее меню; и если выбрано «дата», появится окно выбора даты и связанное с ним поле.
Вот упрощенная версия моего текущего кода:
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()
или его эквивалента. На самом деле, это даже не настоящая калитка Component
.
Как я могу заставить их появляться / исчезать вместе? Если я не могу установить видимость сборщика напрямую, могу ли я как-то связать его с видимостью поля?