L'ajout de méthodes d'action d'un composant composite
Je suis en train d'apprendre au sujet de pièces en composite avec JSF 2.0 et je veux que mon composant pour être en mesure de déclencher les méthodes de sauvegarde des haricots, j'ai donc créé un exemple simple, mais quelque chose est incorrect.
C'est le composant que j'ai créé:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="attribute1"/>
<composite:attribute name="attribute2"/>
<composite:attribute name="actionBtnText"/>
<composite:attribute name="actionMethod" method-signature="java.lang.String action()"/>
</composite:interface>
<composite:implementation>
<h:form>
<h:inputText value="#{cc.attrs.attribute1}"/>
<br/>
<h:inputText value="#{cc.attrs.attribute2}"/>
<br/>
<h:commandButton action="#{cc.attrs.actionMethod}" value="#{cc.attrs.actionBtnText}"/>
</h:form>
</composite:implementation>
</html>
C'est la façon dont je l'utilise dans une page JSF
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:custom="http://java.sun.com/jsf/composite/custom">
...
<h:body>
<custom:demoCustomComponent attribute1="#{demoBB.value1 }" attribute2="#{demoBB.value2 }" actionBtnText="Button text!" actionBtn="#{demoBB.act}"/>
</h:body>
Et c'est le backing bean qui apporte un support à la page où le composant est
@Named("demoBB")
@RequestScoped
public class DemoBB {
private String value1;
private String value2;
public String getValue1() {
return value1;
}
public String act() {
System.out.println("Input 1: " + value1 + "\nInput 2: " + value2);
return null;
}
//Getters and setters
public void setValue1(String value1) {
this.value1 = value1;
}
public String getValue2() {
return value2;
}
public void setValue2(String value2) {
this.value2 = value2;
}
}
Le composant semble rendre bien, mais quand j'appuie sur le bouton, j'obtiens une exception qui dit:
javax.des visages.FacesException: Impossible de résoudre composite composant de
à l'aide de la page à l'aide de EL 'expression#{cc.attrs.actionMethod}'
Je n'ai aucun droit à l'erreur dans l'interface ou de la mise en œuvre de la composante? Pourquoi ne pas travailler?
OriginalL'auteur sfrj | 2011-10-18
Vous devez vous connecter pour publier un commentaire.
Vous défini la méthode de l'action en utilisant le nom de l'attribut
actionBtn
:mais vous êtes attendu pour être le nom de l'attribut
actionMethod
:L'aligner. Ils devraient être les mêmes.
OriginalL'auteur BalusC