¿Cuál es la mejor manera de pasar datos de page1 a page2 usando el mismo bean de respaldo?

Estoy creando un formulario de búsqueda simple en la página 1 y en la página 2 voy a mostrar los resultados.

Me pregunto cuál es la mejor manera de hacerlo con un bean de respaldo @ViewScoped. Anteriormente he tenido que usar @SessionScope para lograr esto.

Página1 – página de búsqueda:

 

Documents Search

Página2 – página de resultados:

 

@ViewScoped Backing Bean:

 @ManagedBean @ViewScoped public class DocumentBacking { private Document document = new Document(); private List results = new ArrayList(); public Document getDocument() { return document; } public void setDocument(Document document) { this.document = document; } public List getResults() { return results; } public void setResults(List results) { this.results = results; } public String search() { results = new ArrayList(); // dummy data Document doc = new Document(); doc.setMainNumber("1111"); doc.setSecNumber("2222"); doc.setFormType("OTHER"); doc.setSubFormType("TEST"); results.add(doc); doc = new Document(); doc.setMainNumber("1234"); doc.setSecNumber("4321"); doc.setFormType("SOMETHING"); doc.setSubFormType("TESTER"); results.add(doc); return "results.xhtml?faces-redirect=true"; } } 

Use Custom Scope es más confiable para su código. Aquí está la muestra de JSF 2.0 Custom Scope.

Decidí usar f:viewParam ‘s y f:event type="preRenderView" . De esta manera tengo páginas que se pueden marcar a través de los parámetros de cadena de consulta, y estoy generando los resultados en la página de resultados en el oyente preRenderView.

Estoy usando la misma página de búsqueda que en mi pregunta.

Página de resultados:

          ...            

@ViewScoped Backing Bean: @ViewScoped public class DocumentBacking {

 private Document document = new Document(); private List results = null; public Document getDocument() { return document; } public void setDocument(Document document) { this.document = document; } public List getResults() { return results; } public void setResults(List results) { this.results = results; } public void generateResults() { results = new ArrayList(); // dummy data Document doc = new Document(); doc.setMainNumber("9343"); doc.setSecNumber("71254"); doc.setFormType("OTHER FORMS"); doc.setSubFormType("CALGB"); results.add(doc); doc = new Document(); doc.setMainNumber("1234"); doc.setSecNumber("4321"); doc.setFormType("SOMETHING"); doc.setSubFormType("MAYO"); results.add(doc); } public String search() { return "results.xhtml?faces-redirect=true&includeViewParams=true"; } 

}