首页 > 解决方案 > 如何制作动态复合组件

问题描述

就像 ui:include 可以通过调用 src 来实现动态一样

<h:form id="form">

    <p:outputPanel id="title" value="This is the main xthtml page">

    <p:dialog header="Modal Dialog" modal="true">

        <ui:include src="#{mainBacking.compositePage}">
            <ui:param name="action" value="actionOne" />
        </ui:include>

    </p:dialog>

</form>

我想通过源调用复合组件。ui:include 中的一个问题是它不能将方法作为参数传递,而复合组件可以。如何创建/调用基于 src 的动态复合组件?当前的方法是我需要在同一个 xthml 文件中指定所有复合组件(当然,这只是最小的可重现代码,真正的要长得多,参数更多);

<h:form id="form">

    <p:outputPanel id="title" value="This is the main xthtml page">

    <p:dialog header="Modal Dialog" modal="true">

        <util:user-composite id="userModaL"
        bean="#{userBean}"></util:user-composite>

        <util:company-composite id="companyModaL"
        bean="#{companyBean}"></util:company-composite>

        <util:education-composite id="educationModaL"
        bean="#{eduBean}"></util:education-composite>

    </p:dialog>

</form>

但这意味着,在页面加载时,所有的 bean 都将被调用和初始化。我不希望这样,因为系统在页面加载时会很重。我希望它根据需要调用组合,然后像 ui:include 一样初始化并显示它。我如何使用复合组件来做到这一点,这可能吗?如果没有,还有其他解决方案吗?

标签: jsfcomposite-componentuiinclude

解决方案


推荐阅读