Comment passer un paramètre à la valeur de a4j:jsFunction

Sur ma page j'ai un bouton qui ouvre une liste d'éléments dans une fenêtre popup. Lorsque je sélectionne 1 élément dans la liste, je veux passer l'id de l'élément à la backingbean de ma première page. Est-il possible? Il a essayé de le faire avec a4j:jsFunction et a4j:param mais il ne marche pas.

C'est mon code:

page 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>

Et c'est le backing bean code de la première page

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

public Integer getNewGuarantorId() {
    return newGuarantorId;
}

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

Lors de la sélection dans le menu contextuel de la méthode dans mon backingbean est appelé, mais newGuarantorId est nulle et setNewGuarantorId n'est jamais appelée.

Est-il une solution à mon problème?

  • Êtes-vous sûr #{applicant.deposit_id} n'est pas null dans la nouvelle fenêtre?
  • oui, il est rempli avec le code correct.
  • Hmm.. c'est étrange, rien n'est mal..Pas de réponse à votre question, mais essayez cette solution de contournement - au lieu d'affecter la valeur de guarantorId, garder le param comme <a4j:param name="param1"/> et dans le actionListener méthode de récupérer cette param1 de la demande comme String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param1");. Et ensuite convertir ce paramètre à int et de l'utiliser davantage. Cela devrait fonctionner.
  • Super! 🙂 Le mettre comme une réponse ci-dessous.S'il vous plaît marquer, si c'est la réponse à votre question
InformationsquelleAutor roel | 2012-01-02