如何在一个页面中显示不同内容的多个<h:message>
标记?
我正在验证inputtext
,如下所示:
Title: <h:inputText id="input"
value="#{insertDocController.docController.documentBean.title}"
required="true" requiredMessage="Required!">
<f:ajax execute="@this" render="message" event="blur" />
</h:inputText>
<h:message for="input" id="message" style="color:red" />
此页面旨在提交有关文档的一些信息。在我提交每个文档后,我想显示一条确认消息,提交按钮的代码是:
<h:commandButton id="submit" value="insert" action="#{insertDocController.submit}" />
<h:messages id="submitMessage" />
submitMessage
方法生成submit()
:
public void submit() throws IOException {
String fileName = FilenameUtils.getName(uploadedFile.getName());
String contentType = uploadedFile.getContentType();
byte[] bytes = uploadedFile.getBytes();
FacesContext.getCurrentInstance().addMessage("submitMessage",
new FacesMessage(String.format("File '%s' type '%s' successfully " +
"submitted!", fileName, contentType)));
this.docController.submit();
}
当我对其进行测试时,将inputtext
留空并点击submit button
,该页面会在标题inputtext
旁边显示一条红色消息,并在提交按钮旁边显示黑色消息,但两者都显示相同的内容:&#34;必需!&#34;
在这个链接上:How do I use multiple h:messages or p:messages on one page?他们谈论类似的问题,但是使用来自primefaces的<p:message>
。他们说解决方案是将属性redisplay
从<p:message>
设置为true。 <h:message>
没有此属性。来自<h:message>
的重新显示有<p:message>
的任何属性吗?
解决方案是什么?
谢谢!
答案 0 :(得分:5)
您需要将globalOnly="true"
添加到h:messages
<h:messages id="submitMessage" globalOnly="true" />
当您创建提交消息时,将clientId设置为null
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(String.format("File '%s' type '%s' successfully " +
"submitted!", fileName, contentType)));