0

网页 :

<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>

我的java类(豆)

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”时,到达断点

当我按下“按钮”(p:remoteCommand被调用)时,未达到断点

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

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

我使用 Primefaces 6.2

4

1 回答 1

0

发现问题。

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

在重新定义内容的每个页面中(当用户登录时),我有一个<h:form>. 似乎action<p:remoteCommand>并没有很好地管理这<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>

重新定义内容部分的同一页面(没有第二种形式)然后,我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>,有时还需要指定id如下form

update="formID:controlID"

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

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

于 2019-11-12T15:12:57.227 回答