我想有条件地输出一些Facelets代码.
为此,JSTL标签似乎工作正常:
<c:if test="${lpc.verbose}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否是最佳做法?还有另一种方法来实现我的目标吗?
如何在运行时有条件地包含jsf facelets文件?所需的示例功能是
if ( add button click) {
ui:include src="Add.xhtml"
}
if ( update button click) {
ui:include src="Update.xhtml"
}
Run Code Online (Sandbox Code Playgroud)
上面的语法只是指示性的......
Mojarra 2.1.1/Apache Tomcat 7.0.22/PrimeFaces 3.4
我最近把我所有的豆子从RequestScoped改为ViewScoped。突然间,对话框的延迟加载不起作用了。我正在使用PrimeFacesJSF 库。
<html>
<h:body>
<f:view>
<h:form>
<p:commandButton id="addId" value="Add" title="Add" type="button" onclick="dlgMultiFileSelect.show();"/>
...
</h:form>
<p:dialog header="Dialog" widgetVar="dlgMultiFileSelect" modal="true" resizable="true" dynamic="true">
<ui:include src="/dialogs/media_browser.xhtml"/>
</p:dialog>
</f:view>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
似乎dynamic="true"不起作用,因为支持 beanmedia_browser.xhtml会立即初始化,而不是在单击按钮时初始化。
难道我做错了什么?
使用 PrimeFaces 3.5.0。
我正在为我的Web UI项目使用PrimeFaces UI库.
我有一个manage_watchfolder.xhtml有按钮的页面,这个按钮启动一个对话框:
<p:commandButton value="Add" oncomplete="dlgEditWF.show()"
update=":editWFForm" process="@none"/>
Run Code Online (Sandbox Code Playgroud)
在这个相同的文件中我dlgEditWF包括edit_watchfolder.xhtml:
<p:dialog id="editDialog" widgetVar="dlgEditWF" modal="true"
resizable="true" onShow="showHideActionLocation();">
<ui:include src="edit/edit_watchfolder.xhtml"/>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
问题是,我不希望edit_watchfolder.xhtml被加载单击该按钮之前.但是,edit_watchfolder.xhtml在manage_watchfolder.xhtml创建的同一时刻"加载" .因此,所有调用的bean edit_watchfolder.xhtml都被创建,初始化等,甚至用户也许永远不会真正点击按钮.这会产生大量开销,并使执行变慢.
我可以避免这个吗?