2009-10-23 6 views
0

Je tente de mettre quelques menus déroulants à l'intérieur d'un a4j: repeat. Les valeurs de la deuxième liste déroulante dépendent de la valeur sélectionnée dans la première. est le code que je tente d'utiliser ci-dessous, mais il passe un paramètre vide:Envoi de paramètres JSF dans Richfaces a4j: répétez

<a4j:repeat id="localRepeat" var="local" value="#{InstanceController.instance.locations}" rowKeyVar="row"> 
        <h:panelGrid columns="2"> 
         <h:outputLabel value="Theater:" /> 
         <h:selectOneMenu id="theater" converter="#{TheaterConverter}" value="#{local.theater}"> 
          <f:selectItems id="theaters" value="#{InstanceController.allTheaters}" /> 
          <a4j:support event="onchange" action="#{InstanceController.getAllCountriesInTheater}" reRender="country" > 
           <f:param name="theater" value="#{local.theater.id}"/> 
          </a4j:support> 
         </h:selectOneMenu> 

         <h:outputLabel value="Country:" /> 
         <h:selectOneMenu immediate="true" id="country" converter="#{CountryConverter}" value="#{local.country}"> 
          <f:selectItems value="#{InstanceController.allCountriesInTheater}" /> 
          <a4j:support event="onchange" reRender="state" /> 
         </h:selectOneMenu> 

        </h:panelGrid> 
        <rich:spacer height="10px" /> 
       </a4j:repeat> 

Si je change le f: envoyer param « 1 » au lieu de « # {local.theater.id} » cela fonctionne comme prévu.

Existe-t-il un moyen d'obtenir la valeur sélectionnée de la première liste déroulante et de l'envoyer en tant que paramètre?

Répondre

2

Cette raison ne fonctionne pas lorsque la balise f: param est affichée, la valeur actuelle de local.theater.id est déjà affectée au paramètre. Ainsi, le param de théâtre contiendra l'id du théâtre qui a été choisi quand la page a été rendue - probablement nul parce qu'aucun théâtre n'a été choisi encore. Ce que vous essayez de faire est beaucoup plus facile: Il suffit de supprimer le f: param et utiliser directement la propriété. Lorsque la balise a4j: support se déclenche parce que la valeur de selectbox a été modifiée, jsf validera vos balises de formulaire et affectera les valeurs de modèle appropriées. Ainsi, lorsque l'action getAllCountriesInTheater est exécutée, la propriété local.theater contient déjà le théâtre sélectionné. En fonction de la conception de vos beans backing, vous aurez probablement besoin d'un paramètre pour identifier l'emplacement pour lequel la selectbox a été modifiée. Ainsi, l'action getAllCountriesInTheater saura dans quels emplacements rechercher le thâtre sélectionné.

Questions connexes