2012-07-07 43 views
0

當我在p:autocomplete中第一次選擇值時,它會觸發set方法。但是,當我嘗試選擇值再次什麼也沒有發生(根據調試它甚至不火的setter)Primefaces p:autocomplete with ajax設置值只有一次

在瀏覽器的網絡監控我看到有添加到返回的XML上選擇以下字符串

<extension ln="primefaces"type="args">{"validationFailed":true}</extension> 

但我不使用任何驗證有

primefaces版本3.3.1

我的臉代碼:

<p:autoComplete value="#{cityManager.kladrCity}" 
          completeMethod="#{cityManager.searchKladr}" var="p" 
          itemLabel="#{p.fullName}" itemValue="#{p}" 
          converter="#{kladrCityConverter}" id="kladrCity" 
          forceSelection="true"> 

          <p:ajax event="itemSelect" 
           listener="#{cityManager.handleKladrSelect}" update="name zipCode" immediate="true"/> 
         </p:autoComplete> 

轉換代碼:

@Named("kladrCityConverter") 
public class KladrCityConverter implements Converter { 
@Inject 
private KladrService kladrService; 

@Override 
public Object getAsObject(FacesContext arg0, UIComponent arg1, String key) { 
    if(key == null || key.trim().equals("")){ 
     return null; 
    } 

    KladrCity obj = kladrService.findById(key); 

    return obj; 
} 

@Override 
public String getAsString(FacesContext arg0, UIComponent arg1, Object obj) { 
    if(obj == null){ 
     return ""; 
    } 
    KladrCity kladrCity = (KladrCity) obj; 
    return kladrCity.getCode(); 
} 

} 
+1

如果JSF不能成功轉換的對象,這將導致驗證錯誤。在轉換器中放置斷點以查看是否發生轉換錯誤。 – BestPractices 2012-07-09 13:48:52

回答

0

變化

@Named("kladrCityConverter") 

@FacesConverter("locationConverter") 
+0

這不是問題所在。請檢查http://stackoverflow.com/questions/7531449/cdi-injection-into-a-facesconverter – BalusC 2012-10-05 12:42:09