PrimeFaces 自动完成:项目选择和更改事件

2023-11-22

我需要在更改文本框时触发 ajax 更新,这是一个<p:autoComplete>成分。我观察到,如果用户选择手动键入文本,则事件是更改,而如果用户单击自动完成的建议之一,则事件是 itemSelect。所以我添加了两个<p:ajax>输入的子级,每个子级调用相同的方法并具有相同的更新列表,但其中一个具有event="change"和另一个event="itemSelect".

然而,我现在发现了一些奇怪的事情。例如,在正常服务器模式下,我打开页面并输入“12”。自动完成功能提供“1233”和“1234”作为建议。我点击“1233”,似乎什么也没发生。我再次点击,其他所有内容都填满了。

在事件处理程序上使用断点在调试器中重复此操作,我可以看到第一次单击后,该值为“12”,第二次单击时,该值变为“1233”。

通过切换注释掉两个不同的<p:ajax>我可以看到不同的后果。如果没有“change”,则如果用户选择自动完成建议,则永远不会调用处理程序;如果没有“itemSelect”,则如果用户手动键入,则永远不会调用处理程序。但两者都有两次调用,我确信会有人抱怨双击。

一些伪代码供那些喜欢的人使用,首先是 xhtml:

<p:autoComplete id="itemId" value="#{myBacker.myBean.itemNumber}"
    required="true" completeMethod="#{myBacker.idAutoComplete}">
    <p:ajax event="itemSelect" update="beanDetails"
        listener="#{myBacker.idChangeEventListener()}" />
    <p:ajax event="change" update="beanDetails"
        listener="#{myBacker.idChangeEventListener()}" />
</p:autoComplete>
<h:panelGroup id="beanDetails">
    <h:panelGroup rendered="#{not empty myBacker.myBean.institutionName}">
        <h:outputText value="#{myBacker.myBean.institutionName}" />
        <!-- Continues with address, phone, etc..  -->
    </h:panelGroup>
</h:panelGroup>

然后是 Java 支持 bean 代码:

public void idChangeEventListener() {
    myBean = myDAO.getDetails(myBean);
    //  another couple of init-type method calls
}

给父标签一个 widgetVar 属性,然后将这个小属性添加到<p:ajax event="change" ...>子标签:

onstart="if(widgetVarName.panel.is(':visible')) return false;" 

如果我没记错的话,当问题被写出来时,我们使用的是 PrimeFaces 3.5 版本。从那时起,我们需要将解决方案更新为:

onstart="if(PF('widgetVarName').panel.is(':visible')) return false;"

感谢 mwalter 指出了这一变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PrimeFaces 自动完成:项目选择和更改事件 的相关文章

随机推荐

  • 如何防止 PHP DOMDocument“修复”您的 HTML 字符串

    我一直在尝试使用 HTML DOM 对象来解析网页 以便将它们用于应用程序来扫描它们的 SEO 质量 但是我遇到了一些问题 出于测试目的 我编写了一个小型 HTML 页面 其中包含以下不正确的 HTML 正如您所看到的 标题位于 head
  • EF Core 多个导航属性产生循环依赖

    我有以下映射配置 入门级 entity HasOne e gt e CurrentHandling WithOne HasForeignKey
  • Django 多处理和数据库连接

    背景 我正在开发一个使用 Django 和 Postgres 数据库的项目 我们还使用 mod wsgi 以防万一 因为我的一些网络搜索提到了它 在提交 Web 表单时 Django 视图启动一项需要花费大量时间 超过用户想要等待的时间 的
  • 当我们创建空的不可变列表/集合/映射时,是否有任何实际应用/用例

    Java 9 提供了一种创建空不可变列表 集合和映射的方法 List list List of Set set Set of Map map Map of 但我无法理解创建空的不可变列表 集合 映射的实际用例是什么 请帮助我理解空的不可变列
  • 如何在 Zend Framework 2 中引导会话

    在 Zend Framework 2 中启动和运行会话的最佳方法是什么 我尝试过设置session start 在我的 index php 文件中 但随后在引导任何自动加载器之前运行该文件 导致我的会话中存在不完整的对象 在 ZF1 中 您
  • C# - 如何打印宽高比/整页

    我正在单击按钮时打印图表控件 chart1 SaveImage ms ChartImageFormat Bmp Bitmap bm new Bitmap ms PrintDocument doc new PrintDocument doc
  • 如何覆盖 setup.py 默认使用的编译器 (GCC) 标志?

    我明白那个setup py使用相同的CFLAGS用于构建 Python 我有一个我们的 C 扩展存在段错误 我需要构建它without O2因为 O2正在优化一些值和代码 以便核心文件不足以确定问题 我只需要修改setup py以便 O2未
  • 如何从 Java 中的 URL 读取图像?

    我的 Web 应用程序中有提供图像的 servlet 当我使用浏览器图像访问这些 url 时 服务器是正确的 然后我有另一个调整图像大小的 servlet 想法是通过调整大小 servlet 中的 url 访问获取图像 然后调整图像大小 但
  • 最佳实践 - 使用 Symfony 2 删除链接

    在 Symfony 2 中 创建删除记录的链接的最佳方法是什么 我可以定义一条路线 entity delete只接受一个DELETE方法 但我不知道如何创建DELETE来自模板的链接 创建也是同样的道理PUT links 所以你会怎么做 接
  • 如何找到循环图中两个节点之间的最长路径?

    我已经解决了大部分发布的问题here 除了最长的路径之外的所有路径 我读过关于最长路径的维基百科文章 如果图是非循环的 这似乎很容易出现问题 而我的不是 那我该如何解决这个问题呢 通过检查所有可能的路径进行暴力破解 我该如何开始这样做呢 我
  • Microsoft SQL Server“Express”版本可以免费开发吗?

    我可以在 Microsoft SQL Server 2005 2008 Express 版数据库上免费开发软件吗 是的你可以 但 Express 版本有一些限制 SQL Server 一次仅使用一个 CPU 最大内存为1GB 数据库大小限制
  • 为什么 C++ 编译器不优化结构数据成员的读写而不是不同的局部变量?

    我正在尝试创建一些 POD 值的本地数组 例如double 与固定max size在编译时已知 然后读取运行时size value size lt max size 并首先处理size该数组中的元素 问题是 为什么编译器不消除堆栈读写arr
  • Java 位图字体:用不同颜色位图传输 1 位图像

    我想在基于 Java AWT 的应用程序中实现一个简单的位图字体绘制 应用程序借鉴了Graphics对象 我想在其中实现一个简单的算法 1 加载文件 可能使用ImageIO read new File fileName 这是 1 位 PNG
  • 为什么 UserManager.CreateIdentityAsync() 正在寻找 IdentityRole 以及如何修复?

    我在用着身份2 0 with MVC5 代码优先我已经延长了IdentityUser and IdentityRole像这样 public class ApplicationUser IdentityUser Required String
  • 键盘可访问的网络下拉菜单?

    有没有办法在网站上构建键盘可访问的下拉菜单 我们当前的 Web 应用程序具有标准的悬停菜单 但这确实减慢了我们的数据输入职员的速度 他们习惯于桌面应用程序 其中有键盘可访问的菜单 无需使用鼠标 我们弄清楚了如何使用键盘快捷键显示菜单 但我不
  • sbt:子项目的动态聚合

    我想发明一个系统动态发现子项目并将它们自动聚合到我的项目中 或者至少以某种方式配置它 为此 我计划拥有一个 模块 文件夹或包含模块路径的可选配置文件 无论如何我需要循环遍历子文件夹 或循环遍历配置文件中的路径列表 并汇总每个子项目 我不知道
  • MySQL 是否可以实现 N-master => 1-slave 复制?

    我想制作一台专用的从机 用于三个不同服务器上三个数据库的数据复制 换句话说 我想做多主 gt 单从复制 有没有办法做到这一点 尽可能简单 Thanks MySQL 不支持多主复制 一个从站有多个主站 MySQL Cluster 除外 您可以
  • “使用目录中的编译器进行共享编译”消息是什么意思以及什么是共享编译?

    自从从 VS2010 升级到 VS2015 以来 我们在编译输出中看到了以前不存在的以下消息 使用目录中的编译器进行共享编译 它是什么意思以及共享编译概念是什么 谷歌搜索我几乎什么也没找到 从我读到的文档来看 这一点不是很清楚 但有一个线索
  • 地图加载后显示带标题(注释)的 Pin 图

    我正在开发我的第一个应用程序 在其中我只是尝试单击按钮显示带有图钉的地图 以及该位置图钉上的标题 我能够加载地图视图并让它显示我想要的坐标 但是 当尝试显示图钉和注释时 我遇到了问题 不确定在哪里编码以及如何进行注释以显示引脚 我搜索并看到
  • PrimeFaces 自动完成:项目选择和更改事件

    我需要在更改文本框时触发 ajax 更新 这是一个