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

时间:2019-01-25 11:34:25

标签: 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(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>

这是控件的属性定义树:

Property definition of custom control

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

            <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)不适用于参数(Object)

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

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

1 个答案:

答案 0 :(得分:2)

似乎参数必须一个接一个地传递,而不是作为单个对象传递。 您可能想尝试以下对我有用的代码:

<?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:纠正错字