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 上的 setter 来实现相同目的。

请记住:如果您无法从 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 回答