2013-07-22 4 views
3

사용자가 목록에서 여러 항목을 선택할 수 있도록 rich : pickList를 사용할 유스 케이스가 있습니다. 그러나 pickList의 항목 수가 너무 많거나 (때로는 수천 개에 이르는 경우가 있음) 사용자가 전체 길이를 아래로 스크롤하는 경우는 거의 없습니다. 그래서 pickList의 왼쪽 목록 위에 검색 상자를 가질 수있는 방법이 있습니까? autoComplete 구성 요소와 유사해야 검색 상자에 입력 한 키워드 중 가장 가까운 항목 인 pickList에 항상 10 개의 항목이 있습니다.richfaces : 검색 상자가있는 pickList를 가질 수 있습니까?

richfaces 4와 JSF 2.0을 사용합니다.

답변

5

어떨까요?

페이지 :

<h:inputText value="#{bean.prefix}"> 
    <a4j:ajax event="keyup" render="list" /> 
    <a4j:ajax event="focus" oncomplete="saveList()" /> 
</h:inputText> 

<a4j:region> 
    <rich:pickList id="list" value="#{bean.selectedList}"> 
     <f:selectItems value="#{bean.filteredList}" var="str" itemLabel="#{str}" itemValue="#{str}" /> 
    </rich:pickList> 
</a4j:region> 

<a4j:jsFunction name="saveList" execute="list" /> 

콩 :

// fullList - contains everything  

public List<String> getFilteredList() {   
    List<String> filteredList = new ArrayList<String>(); 
    Set<String> filteredSet = new TreeSet<String>(); 

    for (String s : fullList) { 
     if (s.startsWith(getPrefix())) { 
      filteredSet.add(s); 
     } 

     if (filterSet.size() > 9) { 
      break; 
     } 
    } 

    filteredSet.addAll(selectedList); 
     // we need to add the selected items so they would be rendered 
     // target list needs to be a subset of the source list 

    filteredList.addAll(filteredSet); 

    return filteredList; 
} 
+0

최고 .. 실크처럼 .. 감사합니다 톤을 작동 .. !! –

관련 문제