У меня есть два контейнера, ДО и ПОСЛЕ. Когда страница загружается, ПЕРЕД видим, а ПОСЛЕ нет.
ПЕРЕД содержит AjaxFallbackLink, который перерисовывает ДО и ПОСЛЕ, но делает ПЕРЕД невидимым и ПОСЛЕ видимым, то есть триггером видимости.
У меня также есть AjaxFallbackLink внутри ПОСЛЕ, который делает обратное: перерисовывает ДО и ПОСЛЕ, но делает ДО ДО видимым, а ПОСЛЕ невидимым.
Проблема: для ссылки внутри ПОСЛЕ требуется два щелчка, чтобы панели перерисовывались, когда мне нужен только один. Я установил для setOutputMarkupPlaceholderTag значение true для каждого компонента, который я могу найти, но все же мне нужно два щелчка по ссылке ПОСЛЕ, чтобы панели перерисовывались.
Есть ли способ решить эту проблему?
Вот некоторый (упрощенный) код:
private class ViewDatesFragment extends Fragment<Campaign> {
private ViewDatesFragment(final MarkupContainer markupProvider) {
super("flightNoDates", "viewDatesFragment", markupProvider);
add(new AddDatesLink());
setOutputMarkupPlaceholderTag(true);
}
private class AddDatesLink extends AjaxFallbackLink<Campaign> {
private AddDatesLink() {
super("addDates");
add(new Label("startDate", "This is the start date").setOutputMarkupPlaceholderTag(true));
setOutputMarkupPlaceholderTag(true);
}
@Override
public void onClick(final AjaxRequestTarget target) {
target.addComponent(viewDatesContainer.setVisible(false));
target.addComponent(editDatesContainer.setVisible(true));
}
}
}
private class EditDatesFragment extends Fragment<Campaign> {
private EditDatesFragment(final MarkupContainer markupProvider) {
super("flightDates", "editDatesFragment", markupProvider);
add(new CancelDatesLink().setOutputMarkupPlaceholderTag(true));
setOutputMarkupPlaceholderTag(true);
}
private class CancelDatesLink extends AjaxFallbackLink {
private CancelDatesLink() {
super("cancelDates");
add(new Label("cancelDatesText", "cancel").setOutputMarkupPlaceholderTag(true));
setOutputMarkupPlaceholderTag(true);
}
@Override
public void onClick(final AjaxRequestTarget target) {
target.addComponent(viewDatesContainer.setVisible(true));
target.addComponent(editDatesContainer.setVisible(false));
}
}
}