【问题标题】:Passing a POJO to a custom control property将 POJO 传递给自定义控件属性
【发布时间】:2017-01-27 16:44:37
【问题描述】:

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

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

我该怎么办?让自定义控件只接收字符串、数字等,并将整个嵌套控件逻辑放在外面?还是有什么诀窍?

【问题讨论】:

  • 嗯,HashMap 而不是整个 POJO 呢?但是:使用 POJO 和 Map,您可以通过方法(例如 getValue() 或 getMyAwesomePropertyValue())访问属性。 CC 属性虽然应该是 java.lang.Object 类型
  • 让他接受一个对象。因此,您可以将任何 Java 对象传递给自定义控件

标签: xpages pojo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      相关资源
      最近更新 更多