PrimeFaces inputText ajax event = valueChange在单击commandBu
使用JSF和PrimeFaces 6.1我有一个inputText字段:
<p:inputText value="#{backingBean.stringField}"> <p:ajax event="valueChange" update="@form" /> </p:inputText> 在同一个表单中是一个commandButton: <p:commandButton id="btnDoThatThing" ajax="true" immediate="true" update="@form" process="@this" action="#{backingBean.doThatThing}"/> 当我 >对inputText字段进行更改, 一切都按预期完成.但如果我: >对inputText字段进行更改, 因为第一次单击commandButton而触发valueChange事件发生在inputText字段中,所以不会触发该按钮. 如果我第二次点击它,按钮动作终于发生了. 现在,如果我将p:ajax event =“valueChange”更改为p:ajax event =“keyup”,commandButton的第一次单击按预期工作,但不幸的是,inputField上的keyup事件非常hacky并且你在字段(复制/粘贴文本,文本选择,’快速’键入’等) 有关如何在inputText字段中启动change事件的任何想法,当用户在inputText字段中输入时立即单击按钮时,触发commandButton操作? 谢谢你的时间! 解决方法
首先触发valueChange.这会更新包含按钮的表单.不是100%确定这是否依赖于浏览器,但在Chromium(Linux)中,不执行单击先前渲染的按钮(在更新之前).
当我将更新表达式更改为selector时,我可以使它工作.我的表达式更新了我需要更新的元素,不包括按钮.就我而言: <p:ajax update="@(form :input:not(button))" /> 请注意,更改事件是输入的默认值,因此我删除了event =“valueChange”. 当然,您不需要使用选择器.您还可以只更新不包含按钮的组件(如面板): <p:ajax update="yourPanel" /> 此外,ajax =“true”是p:commandButton的默认值,因此您可以删除它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- E: 无法修正错误,因为您要求某些软件包保持现状,就是它们
- 常用正则表达式大全
- c# – 如何测试ActionFilterAttribute – OnActionExecuted
- Xcode:宏打破完成/突出显示
- FrameworkElement.DataContext 属性
- Cocos3.4 横版游戏制作-《KillBear》-添加敌人+简单AI实现
- XML Display Error in Oracle EBS: The XML page cannot be
- React-native嵌入到原有Android项目
- ruby-on-rails – 资产管道路由助手解析为错误的URL或路径
- 【Jmeter】Jmeter聚合报告分析