estoy usando JSF y Primefaces y mi pregunta es:JSF ViewParam de CommandButton
Tengo una página (page1.jsf) que recive una vista parámetro con una lista de cadenas (espacio delimitado):
<f:metadata>
<f:viewParam name="list" value="#{bean1.list}" converter="listConverter"/>
</f:metadata>
listConverter convierte la cadena en una lista de palabras individuales. Si tengo acceso a la página a través de url (por ejemplo: page1.jsf? List = word1 word2 word3 ") todo funciona bien!
Pero ahora estoy tratando de usar otra página (page2.jsf) para crear esa lista . de términos estoy usando un primefaces DataTable, siguiendo este ejemplo: http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf
Quiero tomake posible al usuario seleccionar múltiples filas (casilla ejemplo primefaces) y luego presione un botón que redirigirá a page1.jsf y también pasa la lista de elementos seleccionados como parámetro (por ejemplo, usando el ejemplo de presentación de Primeface, pase una lista de los modelos de automóviles seleccionados).
Estoy tratando de hacer t su:
<p:commandButton action="page1?faces-redirect=true&includeViewParams=true" >
<f:attribute name="list" value="#{bean2.convertSelectedItemsToString()}" />
</p:commandButton>
o esto:
<p:commandButton action="page1?faces-redirect=true&includeViewParams=true" >
<f:param name="list" value="#{bean2.convertSelectedItemsToString()}" />
</p:commandButton>
donde Bean2 tiene un [] selectedItems con los objetos seleccionados.
No hace falta decir que ... No funciona.
¿Algún ayuda? Gracias de antemano.
Como una solución temporal fui su segundo enfoque. Pero no me gusta, porque de esa forma mi controlador (bean) depende en gran medida de mis puntos de vista. Esperaba que jsf me proporcionara una mejor solución. – userk
En JSF, un bean de respaldo es, por convención, "supuestamente" respaldado por una sola vista, de modo que el bean de respaldo puede verse dependiente. No es 'bean2.convertSelectedItemsToString' ya tiene una vista específica, o estás haciendo algo genérico allí? Si necesita una solución genérica, puede pasarla como parámetro. Ver respuesta actualizada. –
¡Es una solución inteligente! ¡Yo haré eso! Gracias. – userk