我正在重构一个XPages应用程序,它有五个嵌套的重复控件,重复基本相同的东西(一个xp:panel)。我想,啊哈,这里有一个带属性的自定义控件!
我正在围绕托管bean的属性循环我的重复控件,我希望我可以为自定义控件设置一个属性,只接受我发送它的POJO(然后在其中使用EL访问它)自定义控件)。
我该怎么办?使自定义控件只接收字符串,数字等,并将整个嵌套控制逻辑放在外面?或者有诀窍吗?
答案 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>