如何在Oracle ADF中的af:table中默认选择行

时间:2014-03-29 16:31:07

标签: oracle-adf

我有一个要求,我有一个af:查询面板,在查询后填充af:table。

现在,当选择任何1行时,基于表格行,应根据某些列填充下面的图表。

现在我的问题是,在第一次填充表时搜索时,没有选择任何行。

我需要自动选择第一行。我从网络论坛搜索了多个解决方案,但到目前为止还没有找到任何可行的解决方案。

请帮助我使用哪些代码以编程方式选择行。以及我应该把这个代码放在支持bean中。

1 个答案:

答案 0 :(得分:2)

正如您所正确提到的,在第一次渲染表时,没有选择任何行。我也遇到过这个问题,我通过调用 BeforePhase 上的相应VO的第一行来处理它(即:在页面首次渲染或刷新时) 。

我知道您打算第一次搜索。 af:query组件有一个名为 QueryListener 的属性。您可以将它与支持bean内的方法链接。内容应该是:

  private QueryEvent qEvent = null;

  public void queryListener(QueryEvent queryEvent) {
    setQEvent(queryEvent);
    JSFUtils.invokeMethodExpression("#{bindings.YourViewObjectNameViewCriteriaQuery.processQuery}", Object.class,
                                    QueryEvent.class, getQEvent());

    BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();  //Edited
    DCBindingContainer bc = (DCBindingContainer)bindings;
    DCIteratorBinding iterator = bc.findIteratorBinding("YourViewObject1Iterator");
    Row r = iterator.getCurrentRow(); //Here you've got the very first row, and can operate with it
   .....
  }

  public void setQEvent(QueryEvent qEvent) {
   this.qEvent = qEvent;
  }

  public QueryEvent getQEvent() {
  return qEvent;
 }

有了这个,你应该能够在执行查询时获得第一行(即:搜索完成时)。 获取第一行后,您可以以编程方式执行图形流程执行或任何操作。

注意: invokeMethodExpression 可以在JSFUtils中找到,这是一个带有静态方法的starndard类,您可以在此处下载源代码:JSFUtils.java