我有一个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: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
答案 0 :(得分:1)
p:messages
不在表单中,这就是为什么按钮不会单独更新组件的原因,只有当您放置@all
时才刷新页面中的所有组件。
如果您在其中放入另一个包含p:message
的表单,则可以使用update="fooForm:fooMessages"
答案 1 :(得分:1)
你可以更新bean
像
RequestContext rc = RequestContext.getCurrentInstance();
rc.update("id");