sto usando JSF e primefaces e la mia domanda è:JSF ViewParam da CommandButton
Ho una pagina (page1.jsf) che inviata una param vista con una lista di stringhe (spazio delimitato):
<f:metadata>
<f:viewParam name="list" value="#{bean1.list}" converter="listConverter"/>
</f:metadata>
Il listConverter converte la stringa in un elenco di singole parole. Se accedo alla pagina tramite url (ad esempio: page1.jsf? List = word1 word2 word3 ") tutto funziona bene!
Ma ora sto cercando di usare un'altra pagina (pagina2.jsf) per creare quell'elenco . di termini sto usando un primefaces DataTable, seguendo questo esempio: http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf
voglio tomake possibile per l'utente di selezionare più righe (casella primefaces esempio) e poi premere un pulsante che reindirizza a page1.jsf e passa anche l'elenco degli elementi selezionati come parametro (ad esempio utilizzando l'esempio di vetrina Primeface, passa un elenco dei modelli di auto selezionati)
Sto provando a fare t la sua:
<p:commandButton action="page1?faces-redirect=true&includeViewParams=true" >
<f:attribute name="list" value="#{bean2.convertSelectedItemsToString()}" />
</p:commandButton>
o questo:
<p:commandButton action="page1?faces-redirect=true&includeViewParams=true" >
<f:param name="list" value="#{bean2.convertSelectedItemsToString()}" />
</p:commandButton>
dove bean2 ha un selectedItems [] con gli oggetti selezionati.
Inutile dire che non funziona.
Qualsiasi aiuto? Grazie in anticipo.
Come soluzione temporanea sono andato al tuo secondo approccio. Ma non mi piace, perché in questo modo il mio controller (bean) è fortemente dipendente dalle mie opinioni. Mi aspettavo che jsf mi avrebbe fornito una soluzione migliore. – userk
In JSF un bean di supporto è per convenzione "presunto" per eseguire il back di una singola vista, in modo tale che il backing bean possa essere dipendente dalla vista. Non è 'bean2.convertSelectedItemsToString' mostra già una vista specifica, o stai facendo qualcosa di generico lì? Se hai bisogno di una soluzione generica potresti passare nella pagina come parametro. Vedi risposta aggiornata. –
Questa è una soluzione intelligente! Lo farò! Grazie. – userk