将POJO传递给自定义控件属性

时间:2017-01-27 16:44:38

标签: xpages pojo

我正在重构一个XPages应用程序,它有五个嵌套的重复控件,重复基本相同的东西(一个xp:panel)。我想,啊哈,这里有一个带属性的自定义控件!

我正在围绕托管bean的属性循环我的重复控件,我希望我可以为自定义控件设置一个属性,只接受我发送它的POJO(然后在其中使用EL访问它)自定义控件)。

我该怎么办?使自定义控件只接收字符串,数字等,并将整个嵌套控制逻辑放在外面?或者有诀窍吗?

2 个答案:

答案 0 :(得分:2)

自定义控件可以轻松接受通过自定义属性传入的java对象。只需使用类型:java.lang.Object

答案 1 :(得分:1)

所有答案都是正确的,但只有大卫把它作为答案 - 感谢所有人!

我之后为任何人注意到了我的代码:我将node定义为Type java.lang.Object。请注意将对象放入自定义控件的语法:

<xp:repeat
    id="repeatfirstlevelnode"
    value="#{TableOfContents.root.children}"
    var="firstlevelnode">
    <xc:ccPanelNavigation
        node="#{firstlevelnode}"
        panelStyleWhenActive="panelLevel1 active bold"
        panelStyleWhenInactive="panelLevel1"
        NameNestedRepeatControl="repeatsecondlevelnodes">
    </xc:ccPanelNavigation>

一旦进入自定义控件,就可以使用CompositeData.YourObject访问该属性。

<xp:image
            id="imgDummy"
            url="/dummyEC.png"
            styleClass="imageDummy">
            <xp:this.rendered><![CDATA[#{not compositeData.node.hasChildren}]]></xp:this.rendered>
        </xp:image>