1

Primefaces 2.2.1 を使用しています。オートコンプリートを使用して、データベースから名前を表示しています。一部の名前には「&」が含まれています。例:ジャック&ジル。

オートコンプリートに & を入力すると、候補は「&」の直前の文字で停止します。

名前:ジャックとジル、ジャッキー、ジャックとビル、ジャックとジェン。

「Jack」と入力すると、候補リストに上記の名前がす​​べて表示されます。一方、「Jack &」と入力すると、同じリストが表示され、「Jack & Jill」、「Jack & Bill」、「Jack & Jen」に絞り込まれません。

完全なメソッドに渡されるものをデバッグすると、'&' が渡される前の文字だけに気付きました。例: 「ジャック」。

「&」自体を含む「&」の後に入力されたものはすべて、完全なメソッドに渡されません。Primefaces フォーラムの 1 つからコンバーターを使用することがわかりましたが、まだ役に立ちません。これは早急に解決すべき非常に重要な問題であるため、早急にアドバイスをお願いします。

これがビーンコードです。

public List<String> complete(String nameQuery)
{ 
   List<String> names = new ArrayList<String>(“Jack & Jill”, “Jackie”, “Jack & Bill”, “Jack & Jen”);
   List<String> suggestedNames= new ArrayList<String>(); 

   for (String name : names) { 
      if (name.toLowerCase().trim().startsWith(nameQuery.toLowerCase().trim())) 
      { 
         suggestedNames.add(name.toUpperCase()); 
      } 
   } 
   return suggestedNames; 
} 

Xhtml コード

<p:autoComplete id="stName" 
   value="#{webBean.personVO.name}" 
   completeMethod="#{webBean.complete}" 
   selectListener="#{webBean.updateSelectedName}" 
   onSelectUpdate="name" 
   maxResults="10">

前もって感謝します。

4

2 に答える 2

0

onstart 属性を p:autocomplete タグに追加してみてください。このタグは、javascript 関数を呼び出して、クエリとして complete メソッドに渡される文字をエンコードします。

<script type="text/javascript"> function escapeTerm(request) { request.term = encodeURIComponent(request.term); } </script>

<p:autoComplete id="stName" value="#{webBean.personVO.name}" onstart="escapeTerm(request)" completeMethod="#{webBean.complete}" selectListener="#{webBean.updateSelectedName}" onSelectUpdate="name" maxResults="10">

于 2013-06-24T15:48:25.320 に答える