我有一个自定义控件,我将在其中使用以下代码调用 ccViewTemplate:
<xp:repeat id="repeatData" rows="30"
value="#{viewEntry}" var="veData"
first="#{javascript:return (sessionScope.ssFirst != null)?sessionScope.ssFirst:0;}">
<xp:panel id="panelSelect">
<xp:callback facetName="viewBodyFacet" id="callback1"></xp:callback>
</xp:panel><!-- panelSelect -->
</xp:repeat>
数据库视图(viewEntry)也在 ccViewTemplate 中定义,并基于几个自定义属性进行定义。然后将 ccViewTemplate 添加到另一个名为 ccFinalView 的自定义控件中。其中自定义属性输入,显示内容输入viewBodyFacet。我可以访问 veData 并且到目前为止一切正常。在 viewBodyFacet 中,我有一个链接可以重定向以打开文档,该文档也可以正常工作。但是,在链接中,我想首先获取 repeatData 属性并将其存储,以便它返回到重复的正确页面。我使用这段代码:
sessionScope.put('ssFirst',getComponent("repeatData").first);
但是,代码找不到 getComponent("repeatData"),因为它位于 ccViewTemplate 内部且不可访问。有没有办法在包含 ccViewTemplate 的 ccFinalView 中从 ccViewTemplate 获取组件 repeatData。
我已经完成了 getComponent("ccViewTemplate") 并且我有自定义控件的句柄,但是 getComponent("ccViewTemplate").getComponent("RepeatData").first 失败。那么有没有办法从自定义控件“外部”的自定义控件“内部”的组件中提取值?再看远一点,发现了这个:
var rtn = getComponent("ccViewTemplate").getPropertyMap().getProperty("repeatData");
如果我添加,它不会产生错误但不返回任何内容
var rtn = getComponent("ccViewTemplate").getPropertyMap().getProperty("repeatData").first;
我得到一个错误 getComponent() is null
希望这是有道理的。