Je suis en train de trouver l'équivalent de ce code XHTML:Comment ajouter l'équivalent de f: ajax tag à une case à cocher générée dynamiquement?
<h:selectBooleanCheckbox value="#{sandboxBean.selected}" >
<f:ajax listener="#{sandboxBean.handleToggle}" render="outputText" />
</h:selectBooleanCheckbox>
<br /><br />
<h:outputText value="#{sandboxBean.selected}" id="outputText"/>
pour le cas où la case entière doit être créé dynamiquement par le backing bean. J'ai réussi à obtenir une Ajax bonté avec ce code:
checkbox = new HtmlSelectBooleanCheckbox();
checkbox.setId(makeCheckboxId());
AjaxBehavior valueChangeAction = (AjaxBehavior)FacesContext.getCurrentInstance().getApplication().createBehavior(AjaxBehavior.BEHAVIOR_ID);
valueChangeAction.addAjaxBehaviorListener(new AjaxBehaviorListener() {
@Override
public void processAjaxBehavior(AjaxBehaviorEvent event) throws AbortProcessingException {
System.out.println("Ajax behavior called");
}
});
checkbox.addClientBehavior("valueChange", valueChangeAction);
mais je ne peux pas comprendre comment obtenir l'appel Ajax pour exécuter ma méthode handleToggle
, ni comment donner un accès facile aux outputText
élément que je veux rendre (dans cet exemple de coupure).
En outre, cela semble étonnamment compliqué: tout cela provient d'un besoin d'une table avec un nombre inconnu de colonnes. Suis-je en train d'approcher cela fondamentalement du mauvais angle en créant toute la table dans le code?
Merci. Je vais essayer PrimeFaces et mettre à niveau vers une implémentation plus récente. J'avais essayé '', mais mystifyingly la balise complète a été rendue dans le HTML, plutôt qu'effectuant réellement l'action annoncée. –
Peut-être avez-vous simplement oublié ou typé l'espace de noms XML taglib de JSTL? Ensuite, les balises seront en effet non analysées et apparaîtront dans le HTML rendu. L'espace de nom XML du taglib de base JSTL approprié est 'xmlns: c =" http://java.sun.com/jsp/jstl/core "'. – BalusC
J'aurais juré que j'avais vérifié trois fois, mais je l'ai encore essayé et le fonctionne maintenant. Merci –