2011-05-10 107 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