En mi página tengo un botón que abre una lista de elementos en una ventana emergente. Cuando yo seleccione 1 elemento en la lista, quiero pasar el id del elemento a la backingbean de mi primera página. Es posible? Se trató de hacerlo con a4j:jsFunction y a4j:param pero no de trabajo.

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 backing bean código 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 el menú emergente el método en mi backingbean se llama, pero newGuarantorId es nulo y setNewGuarantorId nunca es llamado.

Hay una solución a mi problema?

Está usted seguro de #{applicant.deposit_id} no es null en la nueva ventana?
sí es llenado con el id correcto.
Hmm.. eso es extraño, nada se ve mal..No una respuesta a su pregunta, pero probar esta solución, en lugar de asignar el valor a guarantorId, mantener el param como <a4j:param name="param1"/> y en el actionListener método de recuperar esta param1 de la solicitud tal como String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param1");. Y, a continuación, convertir este param a int y utilizar en el futuro. Que deben trabajar.
perfecto, que funciona
Genial!!! 🙂 Poniéndola como una respuesta a continuación.Por favor marca, si es que la respuesta a tu pregunta

OriginalEl autor roel | 2012-01-02

3 Comentarios

  1. 5

    Hmm.. eso es extraño, nada se ve mal..No una respuesta a su pregunta, pero probar esta solución, en lugar de asignar el valor a guarantorId, mantener el param como <a4j:param name="param1"/> y en el actionListener método de recuperar esta param1 de la solicitud tal como String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("param1");.
    Y, a continuación, convertir este param int y utilizar en el futuro. Que deben trabajar

    OriginalEl autor Nikhil

  2. 4

    Intente cambiar de actionListener a action:

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

    Aquí se recomienda la lectura sobre el tema: a4j:jsFunction

    OriginalEl autor yatskevich

  3. 1

    Creo que usted puede probar esto:

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

    Y en su Managed bean, definir el setNewGuarantor método como el siguiente:

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

    OriginalEl autor Mr.J4mes

Dejar respuesta

Please enter your comment!
Please enter your name here