Transmettre l'argument à un attribut d'action de composant composite
Le titre dit tout.
J'ai fait une tentative qui a échoué avec l'erreur:
Illegal attempt to pass arguments to a composite component lookup expression (i.e. cc.attrs.[identifier]).
Ma tentative ressemble à ceci:
<composite:interface>
<composite:attribute name="removeFieldAction" method-signature="void action(java.lang.String)" />
</composite:interface>
<composite:implementation>
<h:commandButton value="Remove" action="#{cc.attrs.removeFieldAction('SomeString')}"/>
</composite:implementation>
Quelle est la bonne façon de le faire?
source d'informationauteur Ben
Vous devez vous connecter pour publier un commentaire.
C'est, en effet, ne va pas au travail. Vous ne pouvez pas passer "extra" paramètres par la suite comme ça. Le
method-signature
comme vous l'avez déclaré doit être remplie dans le côté où le composite composant est utilisé. E. g.Le composite composant de la mise en œuvre devrait simplement ressembler à ce
Si ce n'est pas ce que vous voulez et que vous voulez vraiment passer du composite composant le côté, puis je pense à deux façons de passer des arguments supplémentaires: à l'aide de
<f:attribut>
avec une action auditeur à passer comme un attidional attribut de composant, ou<f:setPropertyActionListner>
laisser JSF définir comme un droit de propriété avant que l'action est invoquée. Mais aucun des deux sont sans changements dans le composite composant. Vous auriez besoin de demander pour au moins les grains entiers comme un attribut du composant composite.Voici un exemple avec une
<f:setPropertyActionListener>
. Ceci définit le droit de propriété avant que l'action est invoqué.qui est utilisé comme
Avec l'exemple ci-dessus, le haricot doit ressembler à
Si vous adhérer à une convention spécifique, vous pouvez peut-être même omettre le
property
attribut complètement.