Si j'avais un bean géré comme suit:JSF2: limitation cc: attribut à un type d'objet donné dans une liste
@ManagedBean
@RequestSchoped
public class Example {
private List<String> stringList;
private List<Long> longList;
// getters, setters, etc. down here
}
et avait un composant personnalisé qui a accepté une liste comme un attribut:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:h="http://java.sun.com/jsf/html">
<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="aList" type="java.util.List" />
</cc:interface>
<cc:implementation>
<!-- code is in here -->
</cc:implementation>
</html>
Comment pourrais-je faire en sorte que cela a fonctionné:
<myComp:previousComponent aList="#{example.stringList}" />
mais cela n'a pas:
<myComp:previousComponent aList="#{example.longList}" />
En d'autres termes, ce que je veux faire pour le cc:attribute
est la suivante:
<cc:attribute name="aList" type="java.util.List<java.lang.String>" />
Cependant, comme nous le savons xhtml ne prend pas de bien vouloir d'utiliser > ou <. De plus, avec Generics n'étant vérifié que lors de la compilation, je ne sais pas comment cela serait fait. Est-ce que quelqu'un sait si c'est possible?
Cette solution semble fermer les yeux pour vous cacher. Cela ne résout pas le problème, mais il est plus difficile de comprendre la cause à l'avenir. –