2

我正在尝试根据某些条件在 XPage 上包含自定义控件。这些条件取决于某些用户选择字段。因此,当用户更改他的选择时,我正在填充自定义控件名称,并尝试将其包含在 XPage 中。我读到了,但它在页面加载期间加载了给定页面,我无法动态加载它。

示例代码片段:

<xp:button id="button3" value="Change Page to Include CC 2">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="partial" disableValidators="true" refreshId="pnlRefresh">
        <xp:this.action><![CDATA[#{javascript:sessionScope.ccPageName = "content_CC2"}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>
<xp:panel id="pnlRefresh">
    <xp:include>
        <xp:this.pageName><![CDATA[${javascript:sessionScope.ccPageName + ".xsp";}]]> </xp:this.pageName>
    </xp:include>
</xp:panel>

有没有可能达到这个要求?或者使用 JAVA 我们如何在 XPage 代码中动态注入页面?

我不想使用 ExtLib 中的动态内容控件或切换控件,因为我需要包含所有必需的自定义控件(硬编码),然后我才能根据标准显示特定的 CC。

请帮我。

4

1 回答 1

1

有两种方法可以实现您想要的:

  1. 使用动态内容控件 - 您必须包含所有控件才能使其正常工作,这不是真的 - 有一个 hack 允许您简单地重建此控件的内容(使用 null 参数调用 show 方法),这是一个示例: http://pastebin.com/VEDAjdDJ

  2. 使用自定义控件生成器从 java 构建您的控件。可以在扩展库源代码(com.ibm.xsp.extlib.builder.ControlBuilder 类)中找到这方面的一个示例。这比第一种方式更难,所以我建议您使用动态内容控制!

请记住,在重建控件内容后,控件中未保存的所有数据都将丢失!处理此问题的最佳方法是使用托管 bean 使您的数据远离 UI 控件。

于 2013-02-13T08:58:47.080 回答