2010-12-07 18 views
0

Je développe une application web qui utilise JSF 1.2 pour la couche vue. Par le passé, nous pouvions utiliser Ajax pour actualiser des parties d'une page. Cependant, nous avons reçu l'obligation de prendre en charge les appareils Blackberry, y compris BB OS 5.x. Le navigateur par défaut pour cet appareil a un support JS très limité.JSF Refresh sans Ajax

Par exemple, disons que j'ai une liste de catégories initiale avec des options (fruits, viande, légumes)

<h:selectOneMenu id="foodCategorySelection" value="#{obj.foodCategory}"> 
    <f:selectItem itemLabel="Select Food Category..." /> 
    <f:selectItems value="#{foodService.foodCategories}" /> 
</h:selectOneMenu> 

Ce que je voudrais faire est d'être en mesure d'avoir le rafraîchissement de la page afin que la prochaine sélection le champ affiche uniquement les aliments dans la catégorie d'aliments sélectionnée

<h:selectOneMenu id="foodSelection" value="#{obj.food}"> 
    <f:selectItem itemLabel="Select a Food..." /> 
    <f:selectItems value="#{foodService.filteredFoods}" /> 
</h:selectOneMenu> 

Y a-t-il un motif commun qui peut être utilisé pour que cela fonctionne? Je suppose que le formulaire doit être soumis en quelque sorte afin de lier la catégorie d'aliments à l'objet de support avant de rafraîchir les options alimentaires.

Répondre

2

Pour ceux (limité) le soutien JS, il suffit de laisser le menu déroulant soumettre le formulaire par JS sur le changement:

<h:selectOneMenu onchange="submit()"> 

Dans le haricot, renseignez la 2ème menu déroulant en fonction de la valeur soumise du 1er menu déroulant. Vous pouvez le faire dans une méthode valueChangeListener qui est attachée à la première liste déroulante.

À ceux qui ne sont pas pris en charge par JS, ajoutez un bouton d'envoi en regard de la première liste déroulante afin que l'utilisateur final puisse soumettre manuellement le formulaire après avoir sélectionné une valeur dans la première liste déroulante. Vous remplissez la deuxième liste déroulante dans la méthode d'action du bean qui est attachée au bouton de soumission.