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>
时,有时您还需要像这样指定 form
的 id
:
update="formID:controlID"
因为在我的模板中定义了 <h:form>
(我忘记了),所以它没有用,因为我根本没想到,我也没有给那个表格一个 ID,所以基本上, 给出了默认 ID (j_idt27)。
这意味着我的 update
功能无法找到指定的控件 ID
网页:
<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>
时,有时您还需要像这样指定 form
的 id
:
update="formID:controlID"
因为在我的模板中定义了 <h:form>
(我忘记了),所以它没有用,因为我根本没想到,我也没有给那个表格一个 ID,所以基本上, 给出了默认 ID (j_idt27)。
这意味着我的 update
功能无法找到指定的控件 ID