Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf PrimeFaces p:ajax事件=更改和p:commandButton操作_Jsf_Primefaces - Fatal编程技术网

Jsf PrimeFaces p:ajax事件=更改和p:commandButton操作

Jsf PrimeFaces p:ajax事件=更改和p:commandButton操作,jsf,primefaces,Jsf,Primefaces,我的申请有点问题。我有一个和一个侦听器,用于更改事件。我的页面上还有一个。ajax侦听器和在仅尝试调用一个侦听器时都能正常工作。当用户编辑并且仍然关注该字段时,试图按下触发更改事件ajax侦听器的(预期)但未调用时,就会出现问题 这是我的密码: <p:inputText id="code" value="#{myBean.code}" > <p:ajax event="change" listener="#{myBe

我的申请有点问题。我有一个
和一个
侦听器,用于更改事件。我的页面上还有一个
。ajax侦听器和
在仅尝试调用一个侦听器时都能正常工作。当用户编辑
并且仍然关注该字段时,试图按下触发更改事件ajax侦听器的
(预期)但未调用
时,就会出现问题

这是我的密码:

<p:inputText id="code" 
             value="#{myBean.code}" >
    <p:ajax event="change" 
            listener="#{myBean.method1(myBean.code)}"
            update="@(form :input:not(button))" />
</p:inputText>

<p:commandButton id="searchButton" 
                 value="Click me"
                 action="#{myBean.method2(myBean.code)}"
                 process="@this code" 
                 update="@form"
                 oncomplete="PF('myDlg').show()" />

我读过这个问题,但答案似乎并没有为我解决这个问题

我曾尝试在ajax侦听器上处理该按钮,并尝试将该按钮置于另一种形式,而不是从ajax侦听器更新该形式,但我无法理解。我想做的是可能的吗


提前感谢您的帮助。

如果您的项目运行在JSF 2.2运行时上,您可以利用命名空间
http://xmlns.jcp.org/jsf/passthrough

我也有同样的问题(第一次按下按钮不起作用,下一次按下按钮起作用),并通过以下方式解决了这个问题:

  • 将名称空间添加到页面

    xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
    
  • oninput
    属性添加到
    p:inputText
    (不需要
    p:ajax

  • (延迟是不必要的,但如果文本输入速度快,它会提供更好的性能。)

    oninput
    属性将帮助您的输入字段检测任何类型的更改事件:键入、删除、复制、粘贴、剪切等。。。并通过
    p:remoteCommand
    将它们传递给托管bean


    您还将解决“按钮”问题。

    尝试使用
    blur
    而不是
    change
    ?@Kukeltje是的,同样的问题也会发生
    <p:inputText id="code" value="#{myBean.code}" pt:oninput="onTextChanged()"/>
    
    <p:remoteCommand delay="300" name="onTextChanged"
                     actionListener="#{myBean.method1(myBean.code)}"
                     update="@(form :input:not(button))" />