我想有条件地输出一些Facelets代码.
为此,JSTL标签似乎工作正常:
<c:if test="${lpc.verbose}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否是最佳做法?还有另一种方法来实现我的目标吗?
Mojarra 2.1.
我检查public void execute(FacesContext facesContext) throws FacesException了班上的方法com.sun.faces.lifecycle.RestoreViewPhase.现在,一旦视图通过invokation恢复, viewRoot = viewHandler.restoreView(facesContext, viewId);我们就可以获得前一个请求中的竞争树(如果它是回发).
我检查了那棵树(手动迭代children调试器中组件的属性)并发现复合组件,声明如下:
<h:panelGroup rendered="#{bean.id == 1}">
<utils:dropDownListFilterItem />
</h:panelGroup>
<h:panelGroup rendered="#{bean.id == 2}">
<utils:dateFilterItem />
</h:panelGroup>
<h:panelGroup rendered="#{bean.id == 3}">
<utils:fieldFilterItem />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
都在那棵树里.尽管#{bean.id}被评估为2 ,但它很高兴.我发现唯一的<utils:dateFilterItem />实例将在树中.
所以,我的问题是renderedMojarra 如何处理属性?属性是否会影响唯一的渲染响应阶段?