0

ADFFaces内のjs関数に問題がありますaf:interatoraf:iteratoraf:ouputText、、、 )内に3つのコントロールがありaf:inputTextaf:selectBooleanCheckBoxチェックボックスにjs関数を設定して、チェックボックスをオンにしたときに、のテキストがoutputTextにコピーされるようにしinputTextます。

ここでの問題は、内af:iteratorでADFが独自のIDを生成するか、IDに奇妙な番号を追加することであり、js関数を作成するためにそれらの生成されたIDに依存する必要があるかどうかわかりません。これにはPPRを使用する必要があることはわかっていますが、使用できません。

4

2 に答える 2

1

<af:clientAttribute/> and <af:clientListener/>この動作を実現するには、といくつかのjavascriptを組み合わせて使用​​できます。

また、でclientComponentをtrueに設定する必要があります<af:inputText/>

これは私のテストプログラムで機能します。

<af:document id="d1">
  <af:resource type="javascript">
    function copyFromTo(evt) {
        fromValue = evt.getSource().getProperty('fromValue');
        fromIndex = evt.getSource().getProperty('fromIndex');
        // iterator ID, then fromIndex, then inputText ID 
        id = 'i1:'+fromIndex+':it1'; 
        inputComponent = AdfPage.PAGE.findComponentByAbsoluteId(id);
        inputComponent.setValue(fromValue);
    }
  </af:resource>
  <af:form id="f1">
    <af:panelStretchLayout id="psl1">
      <f:facet name="center">
        <af:iterator id="i1" value="#{PageBean.outputTextValues}" var="row" varStatus="rowStatus">
          <af:panelGroupLayout id="pgl1" layout="horizontal">
            <af:selectBooleanCheckbox label="Copy" id="sbc1">
              <af:clientAttribute name="fromValue" value="#{row}"/>
              <af:clientAttribute name="fromIndex" value="#{rowStatus.index}"/>
              <af:clientListener method="copyFromTo" type="click"/>
            </af:selectBooleanCheckbox>
            <af:spacer width="10" height="10" id="s1"/>
            <af:outputText value="#{row}" id="ot1"/>
            <af:spacer width="10" height="10" id="s2"/>
            <af:inputText label="Label 1" id="it1" value="none" clientComponent="true"/>
          </af:panelGroupLayout>
        </af:iterator>
        <!-- id="af_one_column_stretched"   -->
      </f:facet>
    </af:panelStretchLayout>
  </af:form>
</af:document>
于 2010-11-03T19:11:12.923 に答える
1

なぜ PPR を使用できないのですか? js ID はまったく当てにしないでください。たとえば、タスクフローをリージョンまたはポートレット内に配置すると決定した場合に変更されます。

フィールド値は VO 属性に基づいている必要があります。DB がサポートされていない場合は、一時的な VO を作成できます。次に、VOの値を更新して呼び出します

AdfFacesContext.getCurrentInstance().addPartialTarget(JSFUtils.findComponent("<comp_id of parent component>"));
于 2010-11-02T22:50:45.897 に答える