Калитка 1.5 URL после отправки формы с сохраненной страницей

Я знаю, что на этом (другом) сайте много похожих вопросов, но ни один из них не помог мне с моей проблемой. У меня есть 2 калитки с состоянием. страницы смонтированы следующим образом:

mountPage(firstPath, firstPage.class);
mountPage(secondPath, secondPage.class);

при загрузке страницы firstPage в первый раз она загружается с конструктором по умолчанию, и URL выглядит так, как нужно. как только форма в firstPage будет отправлена, я перенаправлю на страницу с состоянием secondPage следующим образом:

Page secondPage = new secondPage(arg1, arg2);
RequestCycle().setResponsePage(secondPage);

хотя вторая страница смонтирована, результирующая страница (secondPage) отображается со следующим URL:

context?21-1.IFormSubmitListener-componentName-childComponentName-childComponentName-someForm

то, что я хочу, это вторая страница, которая будет отображаться с указанным смонтированным путем. я знаю, что это страница с отслеживанием состояния, и для того, чтобы калитка загрузила точный экземпляр, URL должен быть заполнен. я не против иметь версию страницы и идентификатор в URL, я просто не хочу иметь этот длинный путь к компонентам в URL. Кроме того, я не понимаю, зачем мне нужен путь к форме из firstPage в URL-адресе secondPage.

насколько я понимаю, калитка 1.4 HybridUrlCodingStrategy может сделать что-то подобное, но я не могу найти какой-либо способ сделать это в калитке 1.5. это вообще возможно сделать с калиткой?

любая помощь будет высоко ценится, так как это действительно блокирует меня, и я уже потратил слишком много времени, пытаясь решить ее без удачи.

1 ответ

Попробуйте заменить:

Page secondPage = new secondPage(arg1, arg2);
RequestCycle().setResponsePage(secondPage);

с:

RequestCycle().setResponsePage(secondPage.class);

Должен работать с макушки головы...

РЕДАКТИРОВАТЬ: только что заметил, что вы передаете параметры, и в этом случае вам нужно будет изменить secondPage на что-то вроде:

class secondPage extends WebPage
{
    public secondPage(PageParameters params) //Instead of secondPage(Type1 arg1, Type2 arg2)
    {
        arg1Type arg1 = params.get(0).to*{arg1Type}*();
        arg2Type arg2 = params.get(1).to*{arg2Type}*();
    }
}

а затем позвоните:

PageParameters params = new PageParameters();
params.set(0, arg1);
params.set(1, arg1);
RequestCycle().setResponsePage(secondPage.class, params);
Другие вопросы по тегам