Comment passer des attributs à un composant composite

J'ai de la difficulté à l'aide d'un JSF composite composant dans le droit chemin. J'ai mis quelques composants et tout fonctionnait. Ensuite, j'ai juste extrait le code d'un composé-composant, et a passé les attributs correspondants et tout à coup je reçois conversation exceptions.

<composite:interface>
    <composite:attribute name="selectedIDs"  type="java.util.Collection" required="true"/>
    <composite:attribute name="selectItems" type="java.util.List" required="true" />    
    <composite:attribute name="addAction" required="true"/>
    <composite:attribute name="deleteAction" required="true"/>
    <composite:attribute name="deleteButtonDisabled" />
    <composite:attribute name="ajaxListener" method-signature="void listener(javax.faces.event.AjaxBehaviorEvent)"/>
</composite:interface>
<composite:implementation>
<div class="myClass">
    <h:outputStylesheet library="views" name="selectManyControlPanel.css" target="head" />

    <h:form>
        <h:selectManyListbox value="#{cc.attrs.selectedIDs}">
            <f:selectItems value="#{cc.attrs.selectItems}" />
            <f:ajax render="delete"
                listener="#{cc.attrs.ajaxListener}" />
        </h:selectManyListbox>
        <br />
        <h:commandButton id="delete" value="Delete"
            disabled="#{cc.attrs.deleteButtonDisabled}"
            action="#{cc.attrs.deleteAction}" />
        <h:commandButton id="add" value="Add" action="#{cc.attrs.addAction}"/>
    </h:form>
</div>
</composite:implementation>

Voici la page où je suis en utilisant le composant nouvellement créé

<view:selectManyControlPanel 
            selectedIDs="#{bean.selectedIds}" 
            selectItems="#{bean.listOfSelectItems}"
            addAction="#{bean.addNew}"
            deleteAction="#{bean.deleteSelection}"
            ajaxListener="#{bean.selectionChanged}"
            deleteButtonDisabled="#{bean.deleteButtonDisabled}" />

Bean (certaines méthodes sauté une des pièces renommé)

package views;
@SuppressWarnings("serial")
@Named
@RequestScoped
public class Bean implements Serializable, IOverviewView {
@Inject
Presenter presenter;
private boolean deleteButtonDisabled;
private List<SelectItem> listOfSelectItems;
private Set<Long> selectedIds;
public Bean(){
deleteButtonDisabled = true;
listOfSelectItems = new ArrayList<SelectItem>(10);
}
public void selectionChanged(AjaxBehaviorEvent event){
if(selectedIds.isEmpty())
deleteButtonDisabled = true;
else
deleteButtonDisabled = false;
}
public void deleteBikes(){
presenter.delete(selectedIds);
}
public void addNew(){
presenter.addNew();
}
public List<SelectItem> getListOfSelectItems() {
return listOfSelectItems;
}
public Set<Long> getSelectedIds() {
return selectedIds;
}           
@PostConstruct
public void init(){
System.out.println("INITIALIZING BEAN: " + this.getClass().getName());
this.presenter.setView(this);
this.presenter.init();
}
public boolean isDeleteButtonDisabled() {
return deleteButtonDisabled;
}
@Override
public void setDeleteButtonEnabled(boolean isEnabled) {
deleteButtonDisabled = !isEnabled;
}
public void setListOfSelectItems(List<SelectItem> list) {
this.listOfSelectItems = list;
}
public void setSelectedIds(Set<Long> selectedIds) {
this.selectedIds = selectedIds;
}
@Override
public void updateBikesList(Set<ViewObject> objectsToDisplay) {
updateList(objectsToDisplay);
}
private void updateList(Set<ViewObject> objectsToDisplay){
listOfSelectItems.clear();
for (ViewObject vO : objectsToDisplay) {
final String label = vO.getManufacturer() + ", " + vO.getModel() + " (" + vO.getYear() + ")";
listOfSelectItems.add(new SelectItem(vO.getId(), label));
}
}
....
}

Exception

javax.el.ELException: /resources/views/selectManyControlPanel.xhtml @25,56 value="#{cc.attrs.selectedIDs}": /index.xhtml @21,70 selectedIDs="#{bean.selectedIds}": Cannot convert [Ljava.lang.String;@1e92093 of type class [Ljava.lang.String; to interface java.util.Set

La seule chose qui a changé, c'est que je suis en utilisant la composition à la place de la plaine de code. EL-expressions sont toujours les mêmes. Quelqu'un peut-il m'éclairer s'il vous plaît? J'ai attendu que les paramètres sont passés par mais évidemment pas...

source d'informationauteur lostiniceland