2013-02-22 24 views
5

Sono nuovo di JSF e sto cercando di capire qual è la differenza tra l'azione e gli attributi del risultato? Questa non è la differenza tra pulsanti e pulsanti di comando, ma tra gli attributi esito vs azione sullo stesso tag pulsante.Attributo JSF azione vs risultato

Per esempio, posso avere:

<h:button value="Go" outcome="<value>" /> 

o

<h:button value="Go" action="<value>" /> 

Non sono sicuro di quando usare quale. Inoltre, fa la differenza se <value> è <#{bean.methodThatReturnsStringInNavigationRule}> o <string literal in navigation rule>?

Grazie.

+1

I pulsanti vengono in genere utilizzati per la navigazione, mentre i pulsanti di comando vengono in genere utilizzati per eseguire operazioni commerciali (e, se necessario, navigazione). – skuntsel

+1

Come per l'aggiornamento, nessuno dei componenti JSF ha entrambi gli attributi nello stesso tag. Il '' non supporta affatto l'attributo 'action'. L'attributo 'action' è supportato solo in' '. – BalusC

+0

Il titolo di questa domanda lo rende molto più facile da trovare ora.Non penso che dovrebbe essere più considerato duplciate. – bjedrzejewski

risposta

10

differenza è che mentre l'azione definisce un metodo di server da eseguire, esito specifica una view-id che sarà meta della tua pagina. Devi utilizzare gli input JSF a seconda dell'obiettivo che stai cercando di raggiungere:

  • <h:button outcome="user-management"> indirizza alla pagina di gestione degli utenti. Immaginalo come una sorta di collegamento.
  • <h:commandButton action="#{backingBean.goToUserManagement}" Se si torna "user-management" nel vostro metodo di azione, sta facendo lo stesso del esito ma consente di eseguire una certa logica nel lato server. Deve essere incorporato in un tag h:form.

Inoltre non c'è alcuna differenza tra <h:button outcome="user-management"> o <h:button outcome="#{backingBean.userManagementNavigationResult}">, per quanto i vostri metodo getter lato server restituisce "-gestione degli utenti" value.

+4

'' può essere usato al di fuori di un '', mentre '' non può. –

+0

Inoltre, ** action ** non * necessariamente * si basa su un metodo bean, ma, naturalmente, se non è così, perché non usare ''. – skuntsel

+0

grazie. e per quanto riguarda la permutazione del risultato = # {backing-bean}? – dev

3

Se viene visualizzata l'API JSF 2.0, non è presente l'attributo action per il tag <h:button>. <h:button> è un nuovo tag in JSF 2.0. È possibile dichiarare l'esito della navigazione direttamente nell'attributo outcome, non è necessario chiamare un bean per restituire un risultato come <h:commandButton>.

Tuttavia, se il browser con JavaScript disabilitato, la navigazione non è riuscita, poiché il tag "h: button" genera un evento "onclick" per gestire la navigazione tramite window.location.href.

<h:button value="buton" outcome="login" />   

// output HTML

<input type="button" 
     onclick="window.location.href='/ContextRoot/faces/login.xhtml; return false;" 
     value="buton" /> 

Fonte: mkyong. Il mio sito preferito in cui puoi trovare esempi decenti.

Eccellente blog per JSF: BalusC. Un eroe per così tante persone su questo forum :).

Problemi correlati