Как ориентироваться с параметрами запроса? - PullRequest
2 голосов
/ 20 марта 2012

Я хочу перейти с одной страницы на другую, скажем, с page1 с bean1 до page2 с bean2. Мне нужно передать некоторые параметры от bean1 до bean2.

Я хотел бы понять, как использовать @ManagedProperty для параметров и <f:viewParam> в <f:metadata> части page2. Скажем, у меня есть field1, field2 и field3, доступные в bean1 и bean2 с геттерами и сеттерами. Насколько я понимаю, мне нужно будет определить параметры представления в метаданных page2:

Как

<f:metadata>
    <f:viewParam name="field1" value="#{bean2.field1}"/>
    <f:viewParam name="field2" value="#{bean2.field2}"/>
    <f:viewParam name="field3" value="#{bean2.field3}"/>
</f:metadata> 

Я не уверен, где я использую аннотации для @ManagedProperty, чтобы определить параметры field1, field2 и field3, в bean1 или bean2.

Вкл page1 Я могу использовать "page2?faces-redirect=true&amp;includeViewParams=true"

Могу ли я использовать то же самое в одном из моих методов вместо page1, скажем, при ответе на отправку commandlink?

Если мне нужны эти три поля в page1 и page2, могу ли я определить эти скрытые поля?

1 Ответ

4 голосов
/ 20 марта 2012

Вам необходимо указать их как <f:param> в <h:link> из page1.xhtml.

<h:link value="Go to page2" outcome="page2">
    <f:param name="field1" value="#{bean1.field1}" />
    <f:param name="field2" value="#{bean1.field2}" />
    <f:param name="field3" value="#{bean1.field3}" />
</h:link>

Затем вы можете использовать <f:viewParam> (или @ManagedProperty, но это позволяет менее детализированную проверку) установить их в bean-компонент page2.xhtml.

<f:metadata>
    <f:viewParam name="field1" value="#{bean2.field1}" />
    <f:viewParam name="field2" value="#{bean2.field2}" />
    <f:viewParam name="field3" value="#{bean2.field3}" />
</f:metadata>

Вам не нужно отправлять запрос POST по <h:commandLink> с faces-redirect и includeViewParam здесь. Простой запрос GET <h:link> намного проще и удобнее для SEO.

Смотри также:

...