2017-03-17 9 views
0

JSFページでprimefaces autoCompleteを使用しています。使用するセパレータはコンマです。 autoCompleteのデータをArrayに変換するためにデータを分割しています。今問題は、autoCompleteのデータ項目に "、"が含まれていることです。自分のデータ項目で分割を使用すると、データが分割されます。例えば:Primefaces autoComplete change separator

[mydataitem1、mydataitem 2、mydataitem、3、...] 次にアレイは

mydataitem1 mydataitem 2 mydataitem 3 ...

<p:autoComplete id="someId" multiple="true" value="${someBean.SomeValue}" 
    completeMethod="${someBean.completeMethod}" var="value" 
    itemLabel="value" itemValue="#{title}" forceSelection="true"> 
    <p:column> 
     <h:outputText value="#{title}" /> 
    </p:column> 
    <p:ajax event="itemSelect" listener="#{someBean.action}" process="@form" /> 
</p:autoComplete> 

となりますコンマを他の文字に変更できるautoCompleteの属性はありますか?事前

私はそれを理解したよう
+0

ご迷惑をおかけして申し訳ありませんが、カンマを区切り記号として使用して自動補完していますか? –

+0

Thnks @ JaqenH'gharさんの返事です。私は自分の質問を修正しました。これは、アクション上の関数が値をカンマ区切りの値で送る、primefaces autoCompleteを含んでいます。 –

答えて

0

おかげで、あなたはmultiple="true"を使用する際にリストにバインドする必要があります。文字列だけを使用する場合は、List<String>にバインドすることができます。複雑なオブジェクトを使用する場合は、List<MyObject>を使用してコンバーターを追加する必要があります。

注:ログにリストをプリントアウトした場合、それはまだ

[mydataitem1, mydataitem 2, mydataitem 3,.....] 

を書きますが、それはただのtoString()だ - カンマで区切る方法。

また、itemLabelitemValueにはエラーがあり、常に${}の代わりに#{}を使用する必要があります。

私はprocess="@form"が、検証/変換に失敗したフォームに他の入力コンポーネントを持っているかのように、リスナーが呼び出されないように、ちょっと危険なことがあると思います。私はそれを削除するだけです(デフォルトはprocess = "@ this")。

+0

私はprocess = "@ form"を削除しましたが、.toString()もなくても値はカンマ区切りです。続いて、コード '公共ボイドアクション(AjaxBehaviorEventイベント){' 'オブジェクト\t物体=((UIOutput)event.getSource())であるのgetValue();' 'ストリングmyVal = "";' ' }} –

+0

リスナーが呼び出されると、値はsomeBean.SomeValueで使用可能になります。myVal =((UIOutput)event.getSource())getValue()。toString();そしてsomeValueがリストであれば、あなたはそれをすべて持っているので、イベントを見る必要はありません(私が理解しているように) –

+0

これはうまくいきました。わかりました。ありがとう@ Jaqen –