2011-05-10 144 views
0

這裏沒有發出正確的轉換價值是一些要點:自動完成輸入,如果手動

  1. 我有一個primefaces自動完成的例子,利用與自定義轉換器一個POJO的。
  2. 我爲轉換器中的getAsString返回一個UUID字符串。
  3. 如果我通過鍵盤或鼠標單擊從自動完成下拉對話框中選擇值,則轉換器的字符串值會正常發送。
  4. 但是,當我自己輸入值而沒有從自動完成下拉對話框中選擇,或者只是將值粘貼到文本字段中時,驗證錯誤:值爲。錯誤將會發生。
  5. 我注意到這個錯誤發生的原因是發送到服務器端的值不是由我的轉換器生成的字符串,而是鍵入的值本身。

使用Firebug顯示這個動作。

這是當我選擇從自動完成下拉列表對話框中的值,可以通過鍵盤或鼠標點擊,我們可以看到該值是UUID格式,這是我的POJO轉換器返回:

<input aria-haspopup="true" aria-autocomplete="list" role="textbox" 
    autocomplete="off" id="DetailDialogForm:Bagian_input" 
    name="DetailDialogForm:Bagian_input" value="PERSO" 
    class="ui-inputfield ui-widget ui-state-default ui-corner-all ui-autocomplete-input" 
    type="text"> 
<input id="DetailDialogForm:Bagian_hinput" 
    name="DetailDialogForm:Bagian_hinput" 
    value="b0019ab2-28c3-451a-90f6-62a6941ffcaa" type="hidden"> 

這是當我輸入或粘貼的價值,我們可以看到的價值到底是什麼我輸入,這是不是我的POJO轉換器返回:

<input aria-haspopup="true" aria-autocomplete="list" 
    role="textbox" autocomplete="off" id="DetailDialogForm:Bagian_input" 
    name="DetailDialogForm:Bagian_input" value="PERSO" 
    class="ui-inputfield ui-widget ui-state-default ui-corner-all ui-autocomplete-input" 
    type="text"> 
<input id="DetailDialogForm:Bagian_hinput" 
    name="DetailDialogForm:Bagian_hinput" value="PERSO" type="hidden"> 

這是這個元素的預期行爲?


即時通訊使用Tomcat 7,而這些是我的依賴關係:

<dependency> 
    <groupId>org.primefaces</groupId> 
    <artifactId>primefaces</artifactId> 
    <version>2.2.1</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.faces</groupId> 
    <artifactId>jsf-api</artifactId> 
    <version>2.0.4-b09</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>com.sun.faces</groupId> 
    <artifactId>jsf-impl</artifactId> 
    <version>2.0.4-b09</version> 
    <scope>compile</scope> 
</dependency> 

請分享你的想法,謝謝!


UPDATE


這是JSF摘錄:

<p:autoComplete id="Bagian" label="Bagian yang di limpahkan" 
    value="#{tInputBean.activeDetail.map['department']}" 
    completeMethod="#{tInputBean.filterDepartment}" var="department" 
    itemLabel="#{department.map['departmentName']}" 
    itemValue="#{department}" converter="genericConverter" 
    forceSelection="true" required="true" /> 

和轉換器可在this page,在BalusC的回答上EntityConverter


回答

0

會你張貼你的。XHTML,我需要檢查<號碼:自動完成/ >

請檢查:

  1. 你已經添加<號碼:自動完成>屬性forceSelection
  2. 當用戶選擇上給出的建議列表autoComplete,它應該使用selectListener,並使用onSelectUpdate更新局部視圖

  3. 檢查是否存在< p:ajax/>裏面< p:autoComplete/>,嘗試刪除它

+0

謝謝你的迴應。我已更新我的原始帖子。但是爲了簡短起見,#1:是的,#2:我沒有嘗試從自動完成選擇後更新任何內容,#3:'no p:ajax' – bertie 2011-05-12 11:11:39