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 leactionListener
méthode de récupérer cetteparam1
de la demande commeString 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
Vous devez vous connecter pour publier un commentaire.
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 leactionListener
méthode de récupérer cette param1 de la demande commeString param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param1");
.Et ensuite convertir ce param int et de l'utiliser davantage. Cela devrait fonctionner
Essayez de passer de la
actionListener
àaction
:Ici est recommandé de lecture sur le sujet: a4j:jsFunction
Je pense que vous pouvez essayer ceci:
Et dans votre Managed bean, définir la
setNewGuarantor
méthode comme suit: