primefaces p:commandButton update属性无法更新p:messages组件

时间:2016-10-26 14:49:05

标签: primefaces jsf-2

我有一个PrimeFaces from itertools import count, cycle c = count() for i in cycle("raghav"): print(i) if next(c) >= 6: break 在发送表单后没有显示<p:commandButton update=":messages",但如果我使用p:messages而是更新update="@all",我可以看到显示的消息。

我尝试了许多其他组合,例如p:messagesupdate="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

2 个答案:

答案 0 :(得分:1)

p:messages不在表单中,这就是为什么按钮不会单独更新组件的原因,只有当您放置@all时才刷新页面中的所有组件。

如果您在其中放入另一个包含p:message的表单,则可以使用update="fooForm:fooMessages"

更新该组件

答案 1 :(得分:1)

你可以更新bean

RequestContext rc = RequestContext.getCurrentInstance();
rc.update("id");