2017-03-17 74 views
0

我在我的JSF頁面中使用了primefaces自動完成功能。它使用的分隔符是逗號。我正在分割數據以將autoComplete的數據轉換爲Array。現在問題是我的autoComplete中的數據項包含「,」。當我在我的數據項中使用分割時,它會將我的數據分割。例如:Primefaces自動完成更改分隔符

[mydataitem1,mydataitem 2,mydataitem,3,......] 現在陣列變得

mydataitem1 mydataitem 2 mydataitem ...

<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

Thiks @ 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 = 「」;'' myVal =((UIOutput)event.getSource())。getValue()。toString();' '}' –

+0

當調用監聽器時,該值在someBean.SomeValue中可用。如果someValue是一個列表你有這一切,沒有必要看看事件(據我瞭解) –

+0

好吧,它現在正常工作。我明白。非常感謝@Jaqen –