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");