Немедленно переместитесь на другую страницу после нажатия на дату в DateField в Apache Wicket

Как в теме - я хочу пересылать на другую страницу после того, как в DateField в Apache Wicket нажата дата (что-то вроде setResponsePage работает с кнопками).

Есть ли способ достичь этого? Вот мой DateField:

    final DateField datePublishDateFrom = new DateField("publishDateFromInput", new Model<Date>(Const.DATE)) {

        @Override
        protected DateTextField newDateTextField(String id, PropertyModel dateFieldModel) {
            return DateTextField.forDatePattern(id, dateFieldModel, "yyyy-MM-dd");
        }
    };

    add(datePublishDateFrom);

2 ответа

Решение

Нашел решение, похожее на то, что предложил @svenmeier. Добавление поведения работает просто отлично

  final DateField datePublishDateFrom = new DateField("publishDateFromInput", new Model<Date>(Const.DATE)) {

        @Override
    protected DateTextField newDateTextField(String id, PropertyModel dateFieldModel) {
                 DateTextField dateInput =  DateTextField.forDatePattern(id, dateFieldModel, "yyyy-MM-dd");
                dateInput.add(createAjax());
            return dateInput;
        }
    };  



private AjaxFormComponentUpdatingBehavior createAjax() {
    return new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            setResponsePage(BasePage.class);
        }
    };
}

Пожалуйста, прочитайте Javadoc DateTimeField: он содержит несколько советов о том, как настроить компонент с помощью AjaxFormComponentUpdatingBehavior.

В #onUpdate() вы можете просто использовать #setResponsePage().

Другие вопросы по тегам