Does f: viewParam only execute the query string in the url when the first page uses the same managed bean as the second page?

Use, for example, a search page and a results page. If I have a ViewScoped bean that processes my search page and my results page, I can pass parameters via url using something like this:

search.xhtml

<p:commandButton value="Search" type="submit" action="#{searchBacker.search}" >

bean support

@ManagedBean(name="search")
@ViewScoped
public class searchBacker extends AbstractBacking {

  private String firstName = null;
  private String lastName = null;
  private String results = null;

  public String search() {
    return "results?faces-redirect=true&amp;includeViewParams=true";
  }

  public void getResults() {
    MyDAO dao = new MyDAO();
    results = dao.getResults(firstName, lastName);
  }

  //getters and setters
}

results.xhtml

<f:metadata>
  <f:event type="preRenderView" listener="#{searchBacker.getResults}" />
  <f:viewParam name="firstName" value="#{searchBacker.firstName}"/>
  <f:viewParam name="lastName" value="#{searchBacker.lastName}"/>
</f:metadata>

Now let's say that I have two managed beans - one for the search page and one for the results page.

Will the query string still be built in the URL with two different managed beans or does it only work when using the same managed bean for both pages?

UPDATE

<f:viewParam> search.xhtml results.xhtml, , f:viewParam value .xhtml, search.xhtml. , URL-. f:viewParam value results.xhtml , search.xhtml, URL- , , . f:viewParam results.xhtml - , . 2 f:viewParam beans ?

:

results.xhtml - URL-, .

<f:metadata>
  <f:viewParam name="firstName" value="#{searchBacker.firstName}"/>
  <f:viewParam name="lastName" value="#{searchBacker.lastName}"/>
</f:metadata>

results.xhtml - URL

<f:metadata>
  <f:viewParam name="firstName" value="#{resultsBacker.firstName}"/>
  <f:viewParam name="lastName" value="#{resultsBacker.lastName}"/>
</f:metadata>

results.xhtml - URL- , . , - ?

<f:metadata>
  <f:viewParam name="firstName" value="#{searchBacker.firstName}"/>
  <f:viewParam name="firstName" value="#{resultsBacker.firstName}"/>
  <f:viewParam name="lastName" value="#{searchBacker.lastName}"/>
  <f:viewParam name="lastName" value="#{resultsBacker.lastName}"/>
</f:metadata>
+3
2

includeViewParams , , <f:viewParam>.

, parituclar <f:viewParam> name search.xhtml, results.xhtml. includeViewParams, , , , .

. :


, , , GET. , POST-Redirect-GET . ". ".

+3

@ViewScoped beans, , . xhtml, bean. Obviusly url ( , bean).

bean firstName lastName. , preRenderView, bean, . , beans? .

<p:button outcome="results">
    <f:param name="firstName" value="#{searchBean.firstName}">
    <f:param name="lastName" value="#{searchBean.lastName}">
</p:button>

JSF URL- , . , , , bean, ( getter preRenderView):

<f:metadata>
  <f:event type="preRenderView" listener="#{resultBacker.initialize}" />
  <f:viewParam name="firstName" value="#{resultBacker.firstName}"/>
  <f:viewParam name="lastName" value="#{resultBacker.lastName}"/>
</f:metadata>
+4

Source: https://habr.com/ru/post/1528774/


All Articles