このコードで 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);
ただし、ccViewTemplate 内にありアクセスできないため、コードは getComponent("repeatData") を見つけることができません。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 というエラーが表示されます
これが理にかなっていることを願っています。