我有一个要求,我有一个af:查询面板,在查询后填充af:table。
现在,当选择任何1行时,基于表格行,应根据某些列填充下面的图表。
现在我的问题是,在第一次填充表时搜索时,没有选择任何行。
我需要自动选择第一行。我从网络论坛搜索了多个解决方案,但到目前为止还没有找到任何可行的解决方案。
请帮助我使用哪些代码以编程方式选择行。以及我应该把这个代码放在支持bean中。
答案 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