2010-08-30 14 views
10

Ho letto sul passaggio dei parametri dalla pagina jsf a managedbean tramite actionListener. È anche possibile passare un parametro ad un semplice metodo di azione?JSF2 Parametro azione

Grazie per la lettura ...


entrambi Grazie per i vostri consigli! Sarei perso senza di te :-)

In seguito ha lavorato per me:

<h:commandLink id="link" action="#{overviewController.showDetails}" > 
    <f:setPropertyActionListener target="#{overviewController.show_id}" value="#{project.id}" /> 
    <h:outputText value="#{project.title}" /> 
</h:commandLink> 

Così ora che merita il segno di spunta verde? :-P posso dargli due?

risposta

13

Sì. O:

action="#{bean.method(param)}" 

O

<h:commandButton .. > 
    <f:setPropertyActionListener 
     target="#{bean.targetProperty}" value="#{param}" /> 
</h:commandbutton> 

(e utilizzare la proprietà di fagioli nel metodo)

13

Stai parlando di parametri di questo modulo?

<h:commandButton action="#{bean.action(param)}" /> 

Dipende dall'implementazione EL. Solo JBoss EL e JSP 2.2 EL sono in grado di farlo. Come installare JBoss EL è descritto in this answer.

In alternativa, è possibile utilizzare anche f:param. Il f:param utilizzato per funzionare solo con h:commandLink, ma dal momento che JSF 2.0 funziona anche su h:commandButton. Per esempio.

<h:commandButton action="#{bean.action}"> 
    <f:param name="foo" value="bar" /> 
</h:commandButton> 

con una @ManagedProperty che imposta il parametro come proprietà bean gestito:

@ManagedProperty("#{param.foo}") 
private String foo; 

Con questo si sta tuttavia limitati ai tipi standard (String, Number, Boolean). Un'alternativa è il f:setPropertyActionListener:

<h:commandButton action="#{bean.action}"> 
    <f:setPropertyActionListener target="#{bean.foo}" value="#{otherBean.complexObject}" /> 
</h:commandButton> 

Ciò detto, ci sono altri modi, ma tutto questo dipende l'unico requisito funzionale e gli ambiti di fagioli. Probabilmente non è necessario passare un "parametro" dopo tutto.

3

La nuova spec. JSF2 permette che il metodo di azione riceve un param in modo da essere in grado di fare

<h:commandButton action="#{bean.action(otherBean.complexObject)}"> 

al ManagedBean il metodo sarà:

public String action(Object complexObject) 

* Nota: Assicurati di includere il “el-impl -2.2.jar "*

+0

Questo non è specifico per JSF. Questo è specifico per EL e parte di Servlet 3.0/JSP 2.2 (Tomcat 7, Glassfish 3, JBoss AS 6, ecc.). Quindi quando esegui JSF 2.0 su Servlet 2.5, non funzionerà. Questo è indipendente dalla versione JSF. – BalusC

Problemi correlati