1

私は現在 CRUD アプリケーションに取り組んでおり、次のような LOV を定義しています。

ここに画像の説明を入力

私の質問は、たとえば、次のように定義された ValueChangeListener でこれらすべての戻り値を取得する方法です。

public void onValueChanged(ValueChangeEvent ev){
    BindingContext bctx = BindingContext.getCurrent();
    oracle.binding.BindingContainer bindings = bctx.getCurrentBindingsEntry();
    DCIteratorBinding iterBind = (DCIteratorBinding)bindings.get("MpStavkeulazaView5Iterator");
    System.out.println("Vrijednost je" + ev.getNewValue());
}

このコードはリスト属性の値のみを提供しますが、他の値も必要です。

他の情報があれば教えてください。

4

2 に答える 2

1

まず第一に、バッキング Bean の値変更リスナーを使用することは、このようなユース ケースには理想的ではありません。代わりに、同じ目的で Row Impl のセッターを試してください。

注意: BC テスターからユース ケースをテストできない場合は、ADF の設計に欠陥があります。

第二に、LOV は複数の値を返すことができます: http://adfbugs.blogspot.co.uk/2009/11/returning-multiple-values-from-lov-in.html

于 2015-10-09T06:02:57.893 に答える
1

行属性をバインドしてから、このバインディングの値を取得するか、イテレータからこの属性を取得できます。で処理するvalueChangeListener場合は、この値を取得する前に更新を処理する必要があります。

public void onValueChanged(ValueChangeEvent ev){
  BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
  DCIteratorBinding iterBind = (DCIteratorBinding)bindings.get("MpStavkeulazaView5Iterator");
  System.out.println("Vrijednost je" + ev.getNewValue());
  ev.processUpdates(FacesContext.getCurrentInstance());
  Row row = iterBind.getCurrentRow();
  System.out.println("Proizvod: " + row.getAttribute("Proizvod"));
  System.out.println("Jmjere: " + row.getAttribute("Jmjere"));
}

ただし、ViewObject で Transient 属性を使用し、そこで計算を行う方がよいでしょうか?

于 2015-10-12T10:23:07.500 に答える