primefaces p:commandButton 更新 属性 无法更新 p:messages 组件
primefaces p:commandButton update property fails to update p:messages component
我有一个 PrimeFaces <p:commandButton update=":messages"
,它在发送表单后不显示 p:messages
,但如果我使用 update="@all"
,它会更新 p:messages
,我可以查看显示的消息。
我尝试了很多其他组合,例如 update="messages"
、update="NewRegistryForm:messages"
、update="@form :messages"
、render=":messages"
...但似乎没有其他组合。知道为什么会这样吗?
在 RegistryInputNewBean.processRequest
我只是像这样更新消息组件:
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "error_processing_request")
);
mytemplate.xhtml
,包含p:messages
,是这样的:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
lang="en"
>
<f:view contentType="text/html" encoding="UTF-8" locale="en">
<h:head>
<title>test</title>
</h:head>
<h:body id="pageBody">
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" showSummary="false"/>
<ui:insert name="content" />
</h:body>
</f:view>
</html>
myform.xhtml
是这样的:
<!DOCTYPE html>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
>
<ui:define name="content">
<ui:composition template="mytemplate.xhtml">
<h:form id="NewRegistryForm">
<p:commandButton
id="sendButton"
type="submit"
action="#{registryInputNewBean.processRequest}"
update="@all"
style="display:none" />
</h:form>
</ui:composition>
</ui:define>
</html>
p:messages
不在表单内,这就是为什么按钮不会单独更新组件,只有当您放置 @all
时才会刷新页面中的所有组件。
如果您放入另一个包含 p:message
的表单,您将能够使用 update="fooForm:fooMessages"
更新组件
你可以在 bean 上更新
喜欢
RequestContext rc = RequestContext.getCurrentInstance();
rc.update("id");
我有一个 PrimeFaces <p:commandButton update=":messages"
,它在发送表单后不显示 p:messages
,但如果我使用 update="@all"
,它会更新 p:messages
,我可以查看显示的消息。
我尝试了很多其他组合,例如 update="messages"
、update="NewRegistryForm:messages"
、update="@form :messages"
、render=":messages"
...但似乎没有其他组合。知道为什么会这样吗?
在 RegistryInputNewBean.processRequest
我只是像这样更新消息组件:
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "error_processing_request")
);
mytemplate.xhtml
,包含p:messages
,是这样的:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
lang="en"
>
<f:view contentType="text/html" encoding="UTF-8" locale="en">
<h:head>
<title>test</title>
</h:head>
<h:body id="pageBody">
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" showSummary="false"/>
<ui:insert name="content" />
</h:body>
</f:view>
</html>
myform.xhtml
是这样的:
<!DOCTYPE html>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
>
<ui:define name="content">
<ui:composition template="mytemplate.xhtml">
<h:form id="NewRegistryForm">
<p:commandButton
id="sendButton"
type="submit"
action="#{registryInputNewBean.processRequest}"
update="@all"
style="display:none" />
</h:form>
</ui:composition>
</ui:define>
</html>
p:messages
不在表单内,这就是为什么按钮不会单独更新组件,只有当您放置 @all
时才会刷新页面中的所有组件。
如果您放入另一个包含 p:message
的表单,您将能够使用 update="fooForm:fooMessages"
你可以在 bean 上更新
喜欢
RequestContext rc = RequestContext.getCurrentInstance();
rc.update("id");