Tam kilku powiązanych pytanie na ten temat na SO i elsewhere, ale nie mogłem znaleźć ostateczną odpowiedź na to konkretne pytanie.otworzyć nową stronę (należy przejść do nowej strony) przy wyborze DataTable wiersz
Mam p:dataTable
i chcę mieć możliwość kliknięcia w wiersz i otworzyć stronę szczegółów (nowa strona, a nie okno dialogowe lub okno).
Rozwiązałem to w ten sposób (co mam ze strony primefaces, z jakiegoś powodu nie jest już tam: 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>
Nawigacja jest następnie wykonywany w fasoli:
public void orderSelect(SelectEvent event) {
ConfigurableNavigationHandler nh = (ConfigurableNavigationHandler)FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
nh.performNavigation("orderDetail?faces-redirect=true");
}
Moje pytanie: czy istnieje sposób to zrobić tylko wewnątrz JSF bez pomocy fasoli podkładu?
Ja również z prośbą, ponieważ usunięto exmaple kodu z witryny primefaces, co może wskazywać, że to nie jest właściwy sposób zrobić coś takiego.
prawda - ale to naprawdę nie jest mniej kodu. Myślałem o czymś w rodzaju '
Tak, ale prośby ajaxowe tak naprawdę nie służą do opuszczenia bieżącej strony. Tylko metody działania z elementów sterujących poleceniami (przyciski poleceń, komendy, zdalne polecenia itp.) Spełniają funkcję nawigacji. Zobacz ten link: http://stackoverflow.com/questions/5406855/jsf-navigation-with-ajax – maggu
Masz rację. Wygląda na to, że szukam jakiegoś rozwiązania bez użycia ajax - ale myślę, że to nie zadziała, gdy używam 'p: datatable'. –