2012-01-02 12 views
6

En mi página tengo un botón que abre una lista de elementos en una ventana emergente. Cuando selecciono 1 elemento en la lista, quiero pasar la identificación del artículo al reverso de mi primera página. ¿Es posible? Intentó hacerlo con a4j:jsFunction y a4j:param pero no funciona.Cómo pasar un valor de parámetro a a4j: jsFunction

Este es mi código:

página 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> 

Y este es el código del bean de respaldo para la primera página

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

public Integer getNewGuarantorId() { 
    return newGuarantorId; 
} 

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

Al seleccionar en la ventana emergente se llama al método en mi bean de respaldo, pero newGuarantorId es nulo y setNewGuarantorId nunca se llama.

¿Existe alguna solución a mi problema?

+0

¿Estás seguro de que '# {candidate.deposit_id}' no es nulo en la nueva ventana? – Nikhil

+0

sí, se completa con la identificación correcta. – roel

+0

Hmm ... eso es extraño, nada parece estar mal ... No es una respuesta a su pregunta, pero pruebe esta solución alternativa: en lugar de asignar el valor a 'guarantorId', mantenga el parámetro como' ' y en el método 'actionListener' recupere este' param1' de la solicitud como 'String param1 = FacesContext.getCurrentInstance(). getExternalContext(). getRequestParameterMap(). get (" param1 ");'. Y luego convierta este parámetro a 'int' y utilícelo más. Eso debería funcionar. – Nikhil

Respuesta

5

Hmm .. eso es extraño, nada parece wrong..Not una respuesta a su pregunta, pero intentar esta solución - en lugar de asignar el valor a guarantorId, mantenga el parámetro como <a4j:param name="param1"/> y en el método actionListener recuperar este param1 de la solicitar como String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("param1");. Y luego convierta este parámetro a int y utilícelo más. Eso debería funcionar

1

Creo que se puede probar esto:

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

Y en el bean administrado, definir el método setNewGuarantor de la siguiente manera:

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

Intente cambiar actionListener-action:

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

Le recomendamos leer sobre el tema: a4j:jsFunction

Cuestiones relacionadas