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

Passing a POJO to a custom control property

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

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

我该怎么办?使自定义控件仅接收字符串、数字等并将整个嵌套控件逻辑放在外面?或者有什么技巧?

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

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

我已经在这里为以后的任何人记录了我的代码:我将节点定义为 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>