如何在 JSF 复合组件中传递 List<Note>?

How to pass a List<Note> in JSF composite component?

我必须创建一个 JSF 复合组件,我必须在其中传递如下属性:

<composite:attribute name="noteList" type="XXX" required="true"></composite:attribute>

what should I pass in type attribute if it is a List of type Note class?

我知道我可以制作 type="java.util.List",但我怎样才能使它特定于类型 Note 的列表?

but how can I make it specific to List of type Note

很遗憾,你不能。它是在运行时确定的,在此期间泛型类型信息已经丢失。从技术上讲,这可以使用反射技巧来解决,但是 JSF 和 EL 规范人员可能有他们自己不指定它的原因。

最好的办法是用自定义子类替换它,如下所示:

public class Notes extends ArrayList<Note> {}
<cc:attribute ... type="com.example.model.Notes" />

但这可能需要更改模型。