Создание suggested items программно для inputListOfValues
Пример:
На странице
1
2
3
<af:inputListOfValues \*\*\* "/>
<af:autoSuggestBehavior suggestedItems="#{pageFlowScope.MyBean.onSuggestItems}"/>
</af:inputListOfValues>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public List<SelectItem> onSuggestStores(String searshStr) {
ViewObject vo = VOUtils.getViewObjectByName(CONSTANTS_VO.MY_VO);
String WhereClauseParams = "";
WhereClauseParams = "UPPER (SOME_ATTRIBUTE) LIKE UPPER ('%' || '" + searshStr + "' || '%')";
vo.setWhereClause(WhereClauseParams);
vo.executeQuery();
// Достаточно часто, нужно после execture сбросить добавленный WheWhereClauseParams
VOUtils.clearWhereClauseToViewObject(vo);
// Чтобы возвращались все строки
// У меня без установки этого параметра всегда цикл выполнялся только 1 раз
vo.setRangeSize(-1);
ArrayList<SelectItem> selectItems = new ArrayList<SelectItem>();
for (Row rw : vo.getAllRowsInRange()) {
SelectItem si = new SelectItem((String) rw.getAttribute("MY_ATTRIBUTE"));
selectItems.add(si);
}
return selectItems;
}
Другой вариант, с использованием итератора copy + paste
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public List<SelectItem> onSuggestItems(String searshStr) {
ADFUtils.findIterator("MyIteratorName").getViewObject().setNamedWhereClauseParam("p_searsh", searshStr);
ADFUtils.findIterator("MyIteratorName").getViewObject().executeQuery();
ArrayList<SelectItem> selectItems = new ArrayList<SelectItem>();
for (Row rw : ADFUtils.findIterator("MyIteratorName").getAllRowsInRange()) {
SelectItem si = new SelectItem(rw.getAttribute("ItemValue"), (String) rw.getAttribute("ItemValue"));
String item = (String) rw.getAttribute("Item");
if (item == null) {
si.setDisabled(true);
}
selectItems.add(si);
}
return selectItems;
}