替代ui:JSF中的片段

我正在搜索一种支持的方式来渲染JSF中的一段代码,我通常使用这种方法:

     

由于ui:fragment不支持渲染大部分IDE(如netbeans将其标记为错误但是它可以工作,因为在JSF参数中是inheritance的。

解决此问题的一种方法是使用另一种结构(例如,如果您使用SEAM)

  ....  

另一种方法是在所有内部内容中设置渲染,如下所示:

    

但我不喜欢这种方式,因为你必须将渲染添加到每个元素。

另一种方法是使用但是c:如果从JSF树中删除元素而不是你总是想要做什么,特别是如果你使用AJAX。

所以你们有另一种解决方案吗?

由于ui:fragment不支持渲染大部分IDE(比如Netbeans将其标记为错误但是它起作用,因为在JSF参数中是inheritance的)

这实际上是JSF 2.0 Facelets标记文件声明中的一个错误(在Mojarra中,这是com/sun/faces/metadata/taglib/ui.taglib.xml文件)。 标记文件声明(以及JSF 2.0 标记文档中 )忽略和遗漏了rendered属性,而它实际上存在于UIComponent 。 IDEvalidation基于标记文件声明,因此它会产生误导性validation错误。 这个问题在JSF 2.1中得到修复,缺少的属性被添加到标记文件声明中(以及JSF 2.1 标记文档中 )。

如果只是忽略IDE警告或升级到JSF 2.1不是一个选项,那么您可以考虑使用组件 :

      

如果你没有指定idstylestyleClass和like属性,它无论如何都不输出,否则将呈现一个简单的

如果您拥有的只是普通的HTML(即没有JSF组件),那么您也可以考虑使用

  text 1 text 2 text 3  

但是, 在JSF 2.0中已被弃用 (顺便提一下,它也有一个纪录片错误, JSF 2.0 标签文档没有提到弃用,但是JSF 2.1 标签文档确实)。