我正在研究JSF应用程序的性能.我注意到即使渲染设置为false,代码仍在执行.例如,拿这段代码:
<h:panelGroup rendered="#{bean.render}">
<my composite component here/>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
即使#{bean.render}返回false,我可以从调试日志中清楚地看到,我的复合组件的代码正在渲染阶段执行.在#{bean.render}被调用之前,它看起来似乎正在执行代码.它不会在返回给客户端的HTML中呈现,但仍然显示服务器正在执行代码.
有谁能解释一下?
谢谢.
Bal*_*usC 10
复合组件在渲染响应阶段构建.JSF需要首先填充组件树,然后基于组件树生成HTML.您在复合组件内部显然引用了一些bean属性,这些属性在视图构建期间必须进行评估.
如果您想有条件地控制复合组件的构建而不是渲染,那么您需要使用条件视图构建时标记而不是rendered属性.JSTL提供<c:if>和<c:choose>为.
<c:if test="#{bean.build}">
<my:composite />
</c:if>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |