2012-03-14 12 views
1

私は2つのカスタムコントロール、CustomControlBodyとCustomControlTitleを持っています。コンポーネントの値をあるカスタムコントロールから別のカスタムコントロールに渡す

CustomControlBodyにはラジオボタンがあります。 CustomControlTitleには、CustomControlBodyのラジオボタンの値に基づく計算フィールドがあります。

CustomControlTitleをCustomControlBody内に配置すると、CustomControlTitleの計算フィールドでCustomControlBodyのラジオボタンの値がわかります。

しかし、設計の柔軟性のために、私はCustomControlTitleとCustomControlBodyを別々にxPageに配置したいと考えています。しかし、私がこれを行うと、CustomControlTitleはCustomControlBodyのラジオボタンを見ることができないようです。

CustomControlBodyのラジオボタンの値をCustomControlTitleの計算済フィールドに渡すにはどうすればよいですか?

答えて

4

ビュースコープを使用してパラメータを設定し、リフレッシュ時にこのvarを読み取ることができます。もう1つの方法は、カスタムコントロールのタイトルとボディをファセット(編集可能な領域)で作成することです。これらのコントロールをラジオボタンとテキストフィールドに挿入して3番目のコントロールを作成します。 それofcourseの準備ができていない生産がちょうど上記を説明することである。)

<xp:view xmlns:xp="http://www.ibm.com/xsp/core" 
    xmlns:xc="http://www.ibm.com/xsp/custom" 
    xmlns:xe="http://www.ibm.com/xsp/coreex"> 

    <xp:this.data> 
     <xp:dominoDocument var="yourdocument" action="editDocument" 
      documentId="#{javascript:return compositeData.DocumentUniqueID;}" 
      computeWithForm="save" formName="yourdocument"> 
     </xp:dominoDocument> 
    </xp:this.data> 


    <xp:panel> 

    <xc:Title> 
     <xp:textxp:key="field" value="#{javascript: rb = getComponent("radiobutton"); return cb.getValue();}"/> 
    </xc:Title> 
    <xc:Body> 

    <xp:radioGroup id="radioGroup1" xp:key="fields"> 
     <xp:eventHandler event="onchange" submit="true" 
      refreshMode="partial" refreshId="titleControl"> 
      <xp:this.action><![CDATA[#{javascript:viewScope.value = this.getValue();}]]></xp:this.action> 
     </xp:eventHandler></xp:radioGroup> 
    </xc:Body> 

</xp:panel> 

</xp:view> 
+0

おかげviewScopeが進むべき道であるように。私はそのことを考えていなかった理由を私は知らない。ね。:)あなたができますカスタムコントロールのプロパティを設定します。動的に値を取得できるのはいいことです。 –

+7

Bruce、カスタムコントロールに渡されるプロパティは、プロパティマップに格納されます。 CCがIDを持っている限り、渡されたすべてのプロパティにアクセスできるはずです。 getComponent( "customControlId")。getPropertyMap()。get( "propertyName") –

+5

プロパティ値のtoString ValueBindingImpl(例:[email protected])への参照として、そのプロパティが動的に決定されていることを意味するので、値を取得するために少し複雑な式が必要です。 getComponent ( "customControlId")。getPropertyMap()。get( "propertyName")。getValue(facesContext) –

関連する問題