значение параметра потеряно (структура шва) - PullRequest
2 голосов
/ 13 января 2010

После нажатия на изображение, пользователь перенаправляется на новую страницу, такую ​​как:

/viewPalermoUser.seam?accountId=100245

с кодом:

<s:link title="#{messages['palermo.userlist.view']}" view="/portal/custom/palermo/administration/viewPalermoUser.xhtml"
                            propagation="none">
                        <f:param name="accountId" value="#{account.id}"/>
                        <img src="/static/portal/customer/palermo/find.png" style="border:none"/>
                    </s:link>

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

НО имеют расширенную панель вкладок и кнопку поиска.Всякий раз, когда я нажимаю одну из них, значение accountId равно NULL, хотя в URL-адресе это ОК, поэтому оно имеет реальное значение.

Я не понимаю, почему значение accountId теряется при обратной передаче?

Я беру учетную запись. Мне это нравится:

@RequestParameter
private Long accountId;

Может кто-нибудь дать мне подсказку?

ОБНОВЛЕНИЕ: Наконец-то это работает.Используйте параметры страницы, как предложил Петар.Были проблемы до тех пор, пока я не понял, что:

Параметр страницы шва недоступен в методе @Create поддерживающего компонента.Обходной путь: создайте действие страницы для использования этого параметра. (должно быть полезно для других)

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 января 2010

Насколько я знаю, @RequestParameter работает только по первоначальному запросу. Чтобы решить эту проблему, вы можете использовать параметр страницы Seam. Вставьте в ваш дескриптор page.xml следующий тег: <param name="accountId" value="#{backingBean.accountId}"/> Вам не нужна аннотация @RequestParameter.

0 голосов
/ 13 января 2010

После нажатия на изображение пользователь перенаправляется на новую страницу - я полагаю, она называется /viewPalermoUser.xhtml

Прежде всего, простой параметр запроса не сохраняется после обратной передачи.

Чтобы решить вашу проблему, вы можете создать параметр страницы

<page view-id="/viewPalermoUser.xhtml">
    <param name="courseId" value="#{courseHome.courseId}"/>
</page>

Итак, когда Шов замечает

<param name="courseId" value="#{courseHome.courseId}"/>

Создает параметр страницы и из-за значения атрибута (не обязательно) назначается свойству courseHome.courseId. Параметр страницы сохраняется после обратной передачи JSF.

Если вы хотите, чтобы accountId пережил обратную передачу в s: link (или s: button), вам нужно создать параметр страницы в view-id, который соответствует s: link view = "/ portal / Атрибут custom / palermo / Administration / viewPalermoUser.xhtml "

Итак, нам нужно

<page view-id="/portal/custom/palermo/administration/viewPalermoUser.xhtml">
    <param name="courseId"/>
</page>

При использовании параметра страницы вам не нужно беспокоиться о f: param. s: ссылка позаботится об этом. Таким образом, ваш параметр страницы accoutId автоматически добавляется к ссылке.

<s:link title="#{messages['palermo.userlist.view']}" view="/portal/custom/palermo/administration/viewPalermoUser.xhtml"/>

С уважением,

...