如何在 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" />
但这可能需要更改模型。
我必须创建一个 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" />
但这可能需要更改模型。