Калитка 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);