J'ai la liste déroulante suivante:
<h:selectOneMenu value="#{user.favCoffee3}" onclick="">
<f:selectItems value="#{user.favCoffee3Value}" var="c"
itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
</h:selectOneMenu>
Je voudrais lancer une méthode à partir du haricot par liste déroulante élément de la liste. Comment puis-je y arriver?
Vous pouvez utiliser l'attribut valueChangeListener
, en pointant sur une méthode du bean géré et ajouter un submit()
dans l'attribut onchange
.
Le formulaire devrait ressembler à:
</h:form>
<h:selectOneMenu valueChangeListener="#{bean.valueChanged}"
onchange="submit()">
<f:selectItem itemValue="1" itemLabel="First" />
<f:selectItem itemValue="2" itemLabel="Second" />
</h:selectOneMenu>
</h:form>
Et la méthode valueChangeListener
dans le bean géré serait:
public void valueChanged(ValueChangeEvent event) {
//do your stuff
}
Dans le cadre de la boîte à outils JSF de base, vous pouvez utiliser la balise <f:ajax/>
pour soumettre (à l'aide d'ajax) votre entrée sans avoir besoin d'une page complète d'envoi/d'actualisation. Utiliser votre exemple de code
Définir la balise <f:ajax/>
en tant qu'enfant du menu déroulant
<h:selectOneMenu value="#{user.favCoffee3}" onclick="">
<f:selectItems value="#{user.favCoffee3Value}" var="c" itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
<f:ajax listener="#{user.doSomething}"/>
</h:selectOneMenu>
Définissez une méthode (doSomething()
dans cet exemple) dans votre bean de support qui accepte une instance de AjaxBehaviorEvent
public void doSomething(AjaxBehaviorEvent abe){
//do what you want with your favCoffee3 variable here
}
Lectures complémentaires:
Semble travailler pour a4j: support . Votre h:selectOneMenu
ressemblerait à ceci:
<h:selectOneMenu value="#{user.favCoffee3}">
<f:selectItems value="#{user.favCoffee3Value}" var="c" itemLabel="#{c.coffeeLabel}" itemValue="#{c.coffeeValue}" />
<a4j:support event="onchange" action="#{user.onSelectOneMenuChange}">
</h:selectOneMenu>
Vous devez également ajouter le taglib suivant:
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>