2012-01-02 18 views
6

Sulla mia pagina ho un pulsante che apre un elenco di elementi in un popup. Quando seleziono 1 elemento nell'elenco, voglio passare l'id dell'elemento al backingbean della mia prima pagina. È possibile? Ha provato a farlo con a4j:jsFunction e a4j:param ma non funziona.Come passare un valore di parametro a a4j: jsFunction

Questo è il mio codice:

Pagina 1:

<a4j:jsFunction name="renderGuarantor" render="guarantor" actionListener="#{prospectDetail.setNewGuarantor}"> 
    <a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}" /> 
</a4j:jsFunction> 

popuppage:

<h:outputLink value="" onclick="window.opener.renderGuarantor(#{applicant.deposit_id});window.close();"> 
    <h:graphicImage style="padding:0 1px; border:0" value="${path.staticRootUrl}images/confirm.gif" alt="${msg.applicantslist_select}" title="${msg.applicantslist_select}"/> 
</h:outputLink> 

E questo è il codice di supporto di fagioli per la prima pagina

private Integer newGuarantorId; 
public void setNewGuarantor() { 
    guarantor = newGuarantorId; 
} 

public Integer getNewGuarantorId() { 
    return newGuarantorId; 
} 

public void setNewGuarantorId(Integer newGuarantorId) { 
    this.newGuarantorId = newGuarantorId; 
} 

Quando si seleziona nel popup, viene chiamato il metodo nel mio backingbean, ma newGuarantorId è nullo e setNewGuarantorId non viene mai chiamato.

C'è una soluzione al mio problema?

+0

Sei sicuro che '# {candidato.deposit_id}' non è nullo nella nuova finestra? – Nikhil

+0

sì è compilato con l'id corretto. – roel

+0

Hmm .. questo è strano, niente sembra sbagliato ... Non è una risposta alla tua domanda, ma prova questa soluzione alternativa - invece di assegnare il valore a 'garanteId', tieni il parametro come' ' e nel metodo 'actionListener' recupera questo' param1' dalla richiesta come 'String param1 = FacesContext.getCurrentInstance(). getExternalContext(). getRequestParameterMap(). get (" param1 ");'. E quindi convertire questo parametro in 'int' e utilizzarlo ulteriormente. Questo dovrebbe funzionare – Nikhil

risposta

5

Hmm .. questo è strano, nulla sembra wrong..Not una risposta alla tua domanda, ma provate questa soluzione - invece di assegnare il valore a guarantorId, mantenere il parametro come <a4j:param name="param1"/> e nel metodo actionListener recuperare questo param1 dal richiesta come String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("param1");. Quindi convertire questo parametro in int e utilizzarlo ulteriormente. Dovrebbe funzionare

1

penso che si può provare questo:

<a4j:jsFunction name="renderGuarantor" render="guarantor" 
       actionListener="#{prospectDetail.setNewGuarantor(prospectDetail.newGuarantorId)}" /> 

E nel vostro bean gestito, definire il metodo setNewGuarantor come segue:

public void setNewGuarantor(int newGuarantorId) { 
    guarantor = newGuarantorId; 
} 
3

Provare a passare actionListener-action:

<a4j:jsFunction name="renderGuarantor" render="guarantor" action="#{prospectDetail.setNewGuarantor}"> 
    <a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}"/> 
</a4j:jsFunction> 

Ecco la lettura consigliata sull'argomento: a4j:jsFunction

Problemi correlati