当前位置: 首页 > 知识库问答 >
问题:

Primefaces p:autocomplete with ajax只设置一次值

崔单弓
2023-03-14

当我选择值在p:自动完成第一次它火set方法。但是当我再次尝试选择值时,什么都不会发生(根据调试,它甚至不会触发setter)

在browser network monitor中,我看到在select上返回的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个答案

唐炜
2023-03-14

改变

@Named("kladrCityConverter")

@FacesConverter("locationConverter")
 类似资料:
  • 我知道我可以在每个网页的开头使用ASP/PHP语句,但这似乎使用了太多的资源;每个用户都将在每个页面上执行SET语句... 是否有一种方法可以在每个会话中设置变量或执行其他SQL语句,就像ASP中的onstart事件一样?或者,如果不对每个页面上的每个用户执行查询,如何实现我的目标?

  • 我试图实现每秒循环一次的ScheduledExecutorService线程,但现在它只循环一次。 我的问题是如何设置它,使它周期性地循环,而不是一次迭代? 另外,如何将连接池传递给线程,以便每次迭代都可以查询数据库?任何帮助都非常感谢。

  • 我希望一个进程在我启动我的网络服务后运行,然后每隔30分钟左右运行一次(我现在用较小的延迟测试它,只是为了看看它是否工作),但是我的进程从来不会运行超过一次。我做错了什么? 这是我的密码:

  • 我是一个很新的编程人员,我正在尝试使用Javascript制作岩石剪刀,我遇到了这个问题。每当我点击岩石图像,它会产生一个0和2之间的随机数,如果这个数字是0,那就是平局,如果是1,那玩家输了,如果是2,那玩家赢了。但当我运行这段代码时,它只在数字为0时才起作用。所以当我点击按钮时,如果数字是0,它会显示“它是一个领带”,但如果不是0,它不会显示任何东西。但当我再次尝试单击时,它不起作用。我必须刷

  • 问题内容: 我通过几个测试来设置一个类,而不是使用一个我想拥有一个在所有测试之前仅执行一次的设置方法的类。Junit 4.8有可能吗? 问题答案: 尽管我同意@assylias的观点,即使用是经典的解决方案,但并不总是很方便。带有注释的方法必须是静态的。对于某些需要测试用例实例的测试而言,这非常不便。例如,基于Spring的测试可用于在Spring上下文中定义的服务。 在这种情况下,我个人使用带有

  • 我用几个测试来设置一个类,而不是使用,我希望有一个在所有测试之前只执行一次的setup方法。这在JUnit4.8中是可能的吗?