我已經編寫了一個簡單的概念驗證應用程序來測試使用Oracle ADF的自動填充字段,雖然它主要工作maxSuggestedItems
屬性似乎沒有任何影響。 Oracle的文檔指出,將-1以外的值限制返回值的列表,並在底部包含一個「More ...」項目,這將導致返回整個列表。相反,整個列表總是返回。maxSuggestedItems與Oracle ADF af:autoSuggestBehavior
這是我必須手動實現的東西嗎?如果是這樣,那麼將如何解決?
的JSFF頁中有以下代碼:
<af:inputText label="Accessories:" id="it4">
<af:autoSuggestBehavior suggestItems="#{accessorySuggest.onAccessorySuggest}"
maxSuggestedItems="5"/>
</af:inputText>
它返回建議的值(所有的硬編碼當然)的方法如下:
private static final String[] accessories =
{ "Alloy Wheel", "All-Weather Cargo/Trunk Mat", "All-Weather Floor Mats",
"Audio Unit - Base", "Audio Unit - Premium", "Auto-Dimming Mirror",
"Bluetooth", "Body Side Moldings", "Capert Floor Mats - Premium",
"Car Cover", "Cargo Hooks", "Cargo Liner", "Suggestion 1",
"Suggestion 2", "Suggestion 3", "Suggestion 4", "Suggestion 5",
"Suggestion 6", "Suggestion 7", "Suggestion 8", "Suggestion 9",
"Suggestion 10", "Suggestion 11", "Suggestion 12", "Suggestion 13",
"Suggestion 14", "Suggestion 15", "Suggestion 16", "Suggestion 17",
"Suggestion 18", "Suggestion 19", "Suggestion 20", "Suggestion 21",
"Suggestion 22", "Suggestion 23", "Suggestion 24", "Suggestion 25",
"Suggestion 26", "Suggestion 27", "Suggestion 28", "Suggestion 29",
"Suggestion 30" };
public List onAccessorySuggest(FacesContext context,
AutoSuggestUIHints hints) {
ArrayList<SelectItem> suggestItems = new ArrayList<SelectItem>();
String submittedValue = hints.getSubmittedValue();
//don't return anything until the user has entered at least 3 characters
if(hints.getSubmittedValue().length() < 3) {
return suggestItems;
}
for (String s : accessories) {
if (s.toUpperCase().startsWith(submittedValue.toUpperCase())) {
suggestItems.add(new SelectItem(s));
}
}
return suggestItems;
}
感謝弗蘭克。這是毫無疑問的,並且可以限制返回的響應數量,但我無法做的就是模仿開箱即用的BC組件附帶的「更多...」功能。對於返回給客戶的清單,我必須做些什麼才能做到,我只是希望當我找到它時,它不是太黑客。 :) – sernaferna 2012-07-12 16:06:36
它是不可能的一天。您在ADF BC中看到的模型驅動列表的更多鏈接不是通過自動建議,而是一個智能過濾器。我將提交一個增強請求,以查看我們是否可以在行爲標記上做些什麼。 – 2012-07-19 05:53:33