Ci sono diverse domande correlate su questo argomento su SO e elsewhere, ma non sono riuscito a trovare una risposta definitiva su questa domanda specifica.apre una nuova pagina (vai al nuovo sito) quando selezioni una riga di dataTable
Ho un p:dataTable
e voglio la possibilità di fare clic su una riga e aprire una pagina di dettaglio (una nuova pagina, non un dialogo o una finestra).
ho risolto in questo modo (che ho dal sito web primefaces, per qualche motivo non c'è più: http://web.archive.org/web/20101001223235/http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf):
<p:dataTable var="order" value="#{orderBean.orders}" selection="#{orderBean.selectedOrder}" selectionMode="single" rowKey="#{order.number}">
<p:ajax event="rowSelect" listener="#{orderBean.orderSelect}"/>
<p:column ... />
</p:dataTable>
La navigazione viene quindi eseguita nel chicco:
public void orderSelect(SelectEvent event) {
ConfigurableNavigationHandler nh = (ConfigurableNavigationHandler)FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
nh.performNavigation("orderDetail?faces-redirect=true");
}
La mia domanda: c'è un modo per farlo solo all'interno di JSF senza l'aiuto di un backing bean?
Sto anche chiedendo perché hanno rimosso il codice exmaple dal sito primefaces, che potrebbe essere un'indicazione che questo non è il modo giusto di fare qualcosa del genere.
true - ma non è molto meno codice. Stavo pensando a qualcosa come '
Sì, ma le richieste Ajax non sono realmente lì per navigare lontano dalla pagina corrente. Solo i metodi di azione dai comandi di comando (pulsanti di comando, collegamenti di comando, comando remoto, ecc.) Fanno la funzione di navigazione. Vedi questo link: http://stackoverflow.com/questions/5406855/jsf-navigation-with-ajax – maggu
Hai ragione. Sembra che sto cercando una soluzione senza usare ajax - ma immagino che non funzionerà quando sto usando 'p: datatable'. –