Xpages 通过自定义控件传递xp:link参数

Xpages 通过自定义控件传递xp:link参数,xpages,lotus-domino,Xpages,Lotus Domino,我有一个自定义控件,其代码如下: <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:panel tagName="li"> <xp:this.styleClass><![CDATA[${javascript:@If(view.getPageName().equals(compositeD

我有一个自定义控件,其代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:panel tagName="li">
        <xp:this.styleClass><![CDATA[${javascript:@If(view.getPageName().equals(compositeData.linkPage), "active", "")}]]></xp:this.styleClass>
        <xp:link escape="true"
            text="${javascript:compositeData.LinkLabel}"
            value="${javascript:compositeData.linkPage}"
            parameters="${javascript:compositeData.parameters}">
        </xp:link>
    </xp:panel>
</xp:view>

这是控件的属性定义树:

我尝试像这样使用自定义控件:

            <xc:sideMenuPageLink LinkLabel="Registration"
                linkPage="/Registration.xsp">
                <xc:this.parameters>
                    <xc:parameters name="id" value="new"></xc:parameters>
                </xc:this.parameters>
            </xc:sideMenuPageLink>

构建应用程序时,出现以下错误:

UIOutputLink类型中的方法addParameter(Parameter)不适用于参数(对象)

on SideMenuPageLink.java(我的自定义控件)


如何将链接的参数从我的Xpage传递到自定义控件?

似乎必须逐个传递参数,而不是作为单个对象。 您可能需要尝试以下代码,这对我很有用:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:panel tagName="li">
        <xp:this.styleClass><! [CDATA[${javascript:@If(view.getPageName().equals(compositeData.linkPage), "active", "")}]]></xp:this.styleClass>
        <xp:link escape="true"
            text="${compositeData.LinkLabel}"
            value="${compositeData.linkPage}">
            <xp:this.parameters>
                <xp:parameter
                    name="${compositeData.parameters.name}"
                    value="${compositeData.parameters.value}">
                </xp:parameter>
            </xp:this.parameters>
        </xp:link>
    </xp:panel>
</xp:view>


编辑2019-01-30:更正的打字错误似乎必须逐个传递参数,而不是作为单个对象。 您可能需要尝试以下代码,这对我很有用:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:panel tagName="li">
        <xp:this.styleClass><! [CDATA[${javascript:@If(view.getPageName().equals(compositeData.linkPage), "active", "")}]]></xp:this.styleClass>
        <xp:link escape="true"
            text="${compositeData.LinkLabel}"
            value="${compositeData.linkPage}">
            <xp:this.parameters>
                <xp:parameter
                    name="${compositeData.parameters.name}"
                    value="${compositeData.parameters.value}">
                </xp:parameter>
            </xp:this.parameters>
        </xp:link>
    </xp:panel>
</xp:view>


编辑2019-01-30:更正的打字错误

自定义控件定义中“参数”参数的类型是什么?“参数”是一个包含“名称”和“值”的组,两个字符串。我认为我无法将类型分配给组。自定义控件定义中“parameters”参数的类型是什么?“parameters”是包含“name”和“value”两个字符串的组。我认为我无法为组分配类型。很抱歉响应太晚。因为我不知道前面的参数数量,所以我需要能够将参数数组传递给链接。您的答案仅适用于一个参数。很抱歉响应太晚。因为我不知道前面的参数数量,所以我需要能够将参数数组传递给链接。您的答案仅适用于一个参数。