我正在搜索一种支持的方式来渲染JSF中的一段代码,我通常使用这种方法:
<ui:fragment rendered="#{condition}">
<h:outputText value="text 1"/>
<h:outputText value="text 2"/>
<h:outputText value="text 3"/>
</ui:fragment>
Run Code Online (Sandbox Code Playgroud)
由于ui:fragment不支持渲染大部分IDE(如netbeans将其标记为错误但是它可以工作,因为在JSF参数中是继承的.
解决此问题的一种方法是使用另一种结构(例如,如果您使用SEAM)
<s:div rendered="#{condition}">
....
</s:div>
Run Code Online (Sandbox Code Playgroud)
另一种方法是在所有内部内容中设置渲染,如下所示:
<h:outputText value="text 1" rendered="#{condition}"/>
<h:outputText value="text 2" rendered="#{condition}"/>
<h:outputText value="text 3" rendered="#{condition}"/>
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这种方式,因为你必须将渲染添加到每个元素.
另一种方法是使用<c:if test="#{condtion}">BUT c:如果从JSF树中删除元素,而不是你总是想要做的,特别是如果你使用AJAX.
所以你们有另一种解决方案吗?