2011-10-24 2 views
0

オートコンプリートコンポーネントをテストしていますが、プレフィックス(検索入力として使用)がBeanに渡される方法がわかりません。 は、ここに私のコード:rich:オートコンプリートプレフィックス

ページ:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:t="http://myfaces.apache.org/tomahawk"> 

<f:loadBundle basename="resources.application" var="msg" /> 

<h:head> 
    <title>Test page 
    </title> 
</h:head> 

<h:body> 
    <rich:panel style="height:500px;overflow:auto"> 

     <rich:autocomplete mode="cachedAjax" tokens=", " minChars="1" 
      autofill="false" 
      autocompleteMethod="#{comuniBean.autocomplete}" /> 


    </rich:panel> 


</h:body> 
</html> 

豆:

package it.ubi.test.bean; 

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

public class ComuniBean implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    private ArrayList<String> comuniList; 

    public void init() { 
     comuniList = new ArrayList<String>(); 
     comuniList.add("Brescia (BS)"); 
     comuniList.add("Milano (MI)"); 
     comuniList.add("Bergamo (BG)"); 
    } 

    public List<String> autocomplete(String prefix) { 
     ArrayList<String> result = new ArrayList<String>(); 
     if ((prefix == null) || (prefix.length() == 0)) { 
       comuniList = new ArrayList<String>(); 
       comuniList.add("Brescia (BS)"); 
       comuniList.add("Milano (MI)"); 
       comuniList.add("Bergamo (BG)"); 
       result = comuniList; 
     } else { 
      Iterator<String> iterator = comuniList.iterator(); 
      while (iterator.hasNext()) { 
       String elem = iterator.next(); 
       if ((elem.toLowerCase().indexOf(prefix.toLowerCase()) == 0) 
        || "".equals(prefix)) { 
        result.add(elem); 
       } 
      } 
     } 
     return result; 
    } 


    } 

"接頭辞" 変数は常にnullです。誰かがプレフィックス値を取得する方法を説明することはできますか?

答えて

1

私はこのporblemのための解決策を見つけた:

タグは、タグ

<h:form> 
    <rich:autocomplete id="test" mode="ajax" 
           ... 
    </rich:autocomplete> 
</h:form> 
内でなければなりません
関連する問題