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