2010-11-30 22 views
0

J'ai un autre problème à résoudre. J'ai un code sur ma page xhtml:Comment définir la valeur dans le bean en utilisant c: set with jsf?

<t:dataList id="myDataList" value="#{myBean.myList}" var="element" first="0" `rows="10" dir="LTR" frame="hsides" rules="all">` 
<c:set target="#{myBean}" property="fid" value="#{element[0]}"/> 
... 
</t:dataList> 

Le problème est que la valeur de « fid » dans un haricot est nul lors de la vérification I`m il. Quand j'ai écrit:

<c:set target="#{myBean}" property="fid" value="8"/> 

Tout fonctionne très bien et la valeur est réglée sur '8'. Comment devrais-je résoudre ce problème? Merci pour les réponses.

Répondre

0

Les balises JSTL s'exécutent pendant la durée de la vue. Les balises JSF s'exécutent pendant l'affichage du temps de rendu. Vous pouvez le visualiser comme suit: JSTL s'exécute d'abord de haut en bas lorsque l'arborescence des composants JSF doit être remplie, puis remet l'arborescence des composants à JSF et finalement JSF s'exécute de haut en bas pour afficher le code HTML. Le element[0] n'est pas présent lorsque JSTL crée la vue. C'est seulement là quand JSF rend le HTML. Cependant, 8 est codé en dur et il est toujours là.

Il y a plusieurs façons de le faire de la bonne façon, mais comme les exigences fonctionnelles ne sont pas claires, je ne peux pas suggérer une approche appropriée. Peut-être avez-vous besoin de f:setPropetyActionListener. Peut-être avez-vous besoin de DataModel#getRowData() ou de UIData#getRowData(). Ou peut-être que vous n'en avez pas besoin du tout.

+0

Merci de m'expliquer cette information. Heureusement j'ai déjà trouvé une autre solution de mon problème où je n'ai pas besoin d'utiliser ce code. Cordialement pour vous! – problemgenerator

+0

Je m'attendais déjà à quelque chose comme ça :) – BalusC