L'ouverture d'une nouvelle fenêtre en cliquant sur <p:commandButton> dans JSF
Je suis en train d'ouvrir une nouvelle fenêtre pop-up en cliquant sur un bouton <p:commandButton>
en JSF.
Voici mon code,
<h:inputText style="width:42%"value="#{xxbean.values}" rendered="#{xxBean.yy == true}"
onblur="cc;" maxlength="6">
</h:inputText>
<p:commandButton value="FindPhone" id="xxne" actionListener="#{xx.findPhoneSearch}"
oncomplete="window.open('#{xx.wpUrl}', '_blank')"
rendered="#{xx.editCmdActionflg == true }" async="false">
<f:param name="pmid" value="#{xx.Details.uid}"/>
</p:commandButton>
Je suis à l'appel qu'il a méthode findPhoneSearch comme celui donné ci-dessus dans actionlistener à l'intérieur du bouton de commande ,
Ici est la findPhoneSearch méthode ,
public void FindphoneSearch(ActionEvent event) {
String param = "";
Map<String, String> params = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap();
String expression = "^[a-z0-9]+$";
Pattern pattern = Pattern.compile(expression);
if (params.get("pmid") != null) {
String t_pmid = params.get("pmid");
Matcher matcher = pattern.matcher(t_pmid);
if (matcher.matches()) {
param = "/cgi-bin/Findphones.pl?id=" + t_pmid.trim();
}
}
if (params.get("lpid") != null) {
String t_lpid = params.get("lpid");
Matcher matcher = pattern.matcher(t_lpid);
if (matcher.matches()) {
param = "/cgi-bin/Findphones.pl?id=" + t_lpid.trim();
}
}
String findphoneUrl= "http://Findphone.com" + param;
wpUrl = findphoneUrl;
}
Mon problème est que la fenêtre est ouverte vide sans passer par l'url que je suis le cadrage qui est attribué en wpurl.
Merci de m'aider à résoudre ce problème.
- Essayez d'ajouter l'attribut de mise à jour="@tous" de votre bouton de commande. Je crois que votre problème est que vous tentez d'utiliser les appels ajax sans mettre à jour votre point de vue avec la réponse, donc la valeur de wpUrl est vieux (vide).
- J'ai essayé ça aussi, mais sa ne l'aide pas.Je suis en train de passer les paramètres à la sauvegarde de haricots à l'aide de ce code <f:param name="pmid" value="#{xx.Des détails.uid}"/> quand je clique sur le bouton de commande, mais je ne pouvais pas en mesure d'obtenir la valeur.
- Vous pouvez utiliser onclick="target='_blank'" stackoverflow.com/a/54010074/5626568
Vous devez vous connecter pour publier un commentaire.
EL
#{...}
dansoncomplete
attribut d'une PrimeFaces composante est évaluée lorsque la page avec le bouton est affiché pour la première fois, pas après que le bouton est pressé. Donc, fondamentalement, vous traitez avec la valeur comme il était lorsque la page est affichée, pas avec la valeur est modifiée dans la méthode d'action.Vous feriez mieux de ajax-mise à jour d'un script en ligne au lieu d'effectuer
oncomplete
.N'oubliez pas de retirer
async="false"
à partir du bouton.