p:remoteCommand 不调用声明的动作方法

p:remoteCommand does not invoke the declared action method

网页:

<html xmlns="http://www.w3.org/1999/xhtml"   
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui">

<h:body>

    <ui:composition template="../../Template/template.xhtml">

        <ui:define name="content">

            <h:form>

                <h:outputText id="montest" value="#{ProviderLogin.i}"/>

                <button class="ZWButtonActionIntervention pfButtonWhite" type="button" onclick="testpageRC()"/>
                    <span>TESTING</span>
                </button>

                <p:remoteCommand name="testpageRC" process="@this" update="montest" action="#{ProviderLogin.TESTING()}"/>

                <p:commandButton styleClass="ZWButtonActionIntervention pfButtonOrange" value="#{GestionIntervention.m_typeNonTraitee}" action="#{ProviderLogin.TESTING()}"/>

            </h:form>

        </ui:define>    
    </ui:composition>

</h:body>

我的javaclass(豆)

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@SessionScoped
@ManagedBean(name="ProviderLogin")
public class ProviderLogin implements Serializable
{ 
    private int i;

    public int getI(){return i;}

    public void TESTING(){i++;}
}

我在函数中有一个断点'TESTING()'

当我按下'p:commandButton'时,到达断点

当我按下 'button'(调用 p:remoteCommand)时,未到达断点

真正奇怪的是 'p:remoteCommand' 适用于此:update="montest" 但是,bean 中的方法未触发。

顺便说一下,当我开始写 #{... 我可以访问我的 bean(变量和方法)

我使用 Primefaces 6.2

发现问题。

每个网页都定义了一个模板的内容。 在这个模板中有包含 2 <h:form> 的部分 "content"。 一种是用户未登录时的渲染器。 另一个在用户正确登录时呈现。

在每个重新定义内容的页面中(当用户登录时),我有 <h:form> 的第二部分。 <p:remoteCommand>action 似乎没能很好地管理这一点,而 <p:button> 却能。我刚刚删除了每个页面上的那个表格,我的问题就解决了。

我的模板(内容部分)

<div id="content" style="padding: 10px">
    <h:form rendered="#{!ProviderLogin.m_User.m_bLogged}">
        <h:button value="Connexion" outcome="/Gestion/Connexion.xhtml"/>
    </h:form>
    <h:form id="formContent" rendered="#{ProviderLogin.m_User.m_bLogged}">
        <ui:insert name="content" >
            <ui:include src="content.xhtml" />
        </ui:insert>
    </h:form>
</div>

一个页面重新定义了内容部分(第二个表格给了我错误)

<h:body>
    <ui:composition template="../Template/template.xhtml">
        <ui:define name="content">
            <h:form id="formInterventions">
                PAGE CONTENT
            </h:form>
        </ui:define>    
    </ui:composition>
</h:body>

重新定义内容部分的同一个页面(没有第 2 种形式) 然后,我的 action<p:remoteCommand> 起作用了!

 <h:body>
     <ui:composition template="../Template/template.xhtml">
         <ui:define name="content">
             PAGE CONTENT
         </ui:define>   
     </ui:composition>
 </h:body>

我也给你这个信息:

我使用 update 一些控件,例如这个展示柜:

https://www.primefaces.org/showcase/ui/ajax/poll.xhtml

你需要给你想要的控件的 id update

当您使用 <h:form> 时,有时您还需要像这样指定 formid :

update="formID:controlID"

因为在我的模板中定义了 <h:form>(我忘记了),所以它没有用,因为我根本没想到,我也没有给那个表格一个 ID,所以基本上, 给出了默认 ID (j_idt27)。

这意味着我的 update 功能无法找到指定的控件 ID