我的申请遇到了一些问题。我有一个<p:inputText>
的{{1}}监听器用于更改事件。我的页面上还有一个<p:ajax>
。当只尝试调用一个时,ajax监听器和<p:commandButton>
都按预期工作。当用户编辑<p:commandButton>
并且仍然专注于该字段时,会发生问题,尝试按<p:inputText>
触发更改事件ajax侦听器(预期),但不调用<p:commandButton>
(不预期)。
这是我的代码:
<p:commandButton>
我已阅读this个问题,但答案似乎并没有为我解决问题。
我已经尝试过处理ajax监听器上的按钮,我尝试将按钮放在不同的表单中,而不是从ajax监听器更新该表单,但我无法弄明白。我想做什么甚至可能?
提前感谢您的帮助。
答案 0 :(得分:2)
如果您的项目在JSF 2.2运行时运行,则可以使用命名空间http://xmlns.jcp.org/jsf/passthrough
我遇到了同样的问题(按钮在第一次按下时没有工作,下次按下它有效)并按照以下方式解决:
为您的网页添加名称空间
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
将oninput
属性添加到p:inputText
(无需p:ajax
)
<p:inputText id="code" value="#{myBean.code}" pt:oninput="onTextChanged()"/>
在下面添加p:remoteCommand
<p:remoteCommand delay="300" name="onTextChanged"
actionListener="#{myBean.method1(myBean.code)}"
update="@(form :input:not(button))" />
(延迟不是必需的,但如果快速键入文本,它会提供更好的性能。)
oninput
属性将帮助您的输入字段检测任何类型的更改事件:键入,删除,复制,粘贴,剪切等...并通过p:remoteCommand
将它们传递给托管bean。
您还将解决“按钮”问题。