f:ajax d'action de la méthode n'est pas appelée
Je suis en utilisant JSF2, avec de riches visages 4. Mon but est d'afficher un numéro de demande qui est généré à partir d'une méthode dans le backend dans un champ de saisie de texte à l'aide d'ajax.
Ici est extrait de mon code:
....
<h:outputText value="Drawer No" />
<h:outputText value="*" style="color:#ff0000;"/>
<h:inputText id="drawer" value="#{requestBean.drawerNumber}" required="true"
requiredMessage="Please enter drawer number">
<f:ajax event="change" action="#{requestBean.generateRequestId}"
execute="@form" render="requestId"/>
</h:inputText>
<h:outputText value="Request Id" />
<h:inputText id="requestId" value="#{requestBean.requestId}" readonly="true" required="true" >
</h:inputText>
</td>
<td>
<h:message for="requestId" style="color:red;font-size:10pt"/>
....
Bean:
public void generateRequestId(ActionEvent e)
{
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
String emp=(String) session.getAttribute("loginUser");
System.out.println("inside ajax event" + emp);
try {
requestId = AdminDAO.getRequestId(emp);
} catch (ParseException e1) {
e1.printStackTrace();
}
}
Une fois que la méthode est appelée, elle serait de générer un ID de la demande qui doit rendus retour à l'ID de la demande.
Ce code n'est pas même l'appel de la méthode, et si j'utilise <a4j:ajax
au lieu de f:ajax
, il me dit que la méthode n'est pas présent.
Si d'autres façons de le faire est aussi très bien pour moi
OriginalL'auteur user1612507 | 2012-08-20
Vous devez vous connecter pour publier un commentaire.
Ici,
La
action
attribut est faux. Vous êtes susceptible de créer de la confusion avec<h:commandButton action>
. Vous avez besoin de lalistener
attribut de la place.(note que j'ai enlevé le
event
attribut; il est déjà par défautchange
en cas de<h:inputText>
)Et ici,
La
ActionEvent
argument est faux. Vous êtes susceptible de créer de la confusion avec<h:commandButton actionListener>
. Vous avez besoin de laAjaxBehaviorEvent
argument à la place.Vous pourriez, si nécessaire, retirez-le complètement si vous n'avez pas besoin de quelque chose de lui. C'est facultatif.
Voir aussi:
<f:ajax>
de la balise de la documentationOriginalL'auteur BalusC