【问题标题】:Primefaces p:autocomplete with ajax sets value only oncePrimefaces p:带有ajax的自动完成设置值仅一次
【发布时间】:2012-07-07 23:23:26
【问题描述】:

当我第一次在 p:autocomplete 中选择值时,它会触发 set 方法。但是当我再次尝试选择值时,什么也没有发生(根据调试它甚至不会触发 setter)

在浏览器网络监视器中,我看到在选择返回的 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();
}

} 

【问题讨论】:

  • 如果 JSF 无法成功转换对象,则会导致验证错误。在转换器中放置断点以查看是否/在哪里发生了转换错误。

标签: ajax jsf-2 autocomplete primefaces


【解决方案1】:

改变

@Named("kladrCityConverter")

@FacesConverter("locationConverter")

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2020-10-04
  • 2011-03-12
  • 2012-09-28
  • 1970-01-01
相关资源
最近更新 更多