Luc*_*ane 2 java validation ajax jsf message
如何<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" />
Run Code Online (Sandbox Code Playgroud)
此页面旨在提交有关文档的一些信息.在我提交每个文档后,我想显示一条确认消息,提交按钮的代码是这样的:
<h:commandButton id="submit" value="insert" action="#{insertDocController.submit}" />
<h:messages id="submitMessage" />
Run Code Online (Sandbox Code Playgroud)
并且在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();
}
Run Code Online (Sandbox Code Playgroud)
当我测试它,inputtext留空并点击时submit button,页面会在inputtext标题旁边显示一条红色信息,在提交按钮旁边显示一条黑色信息,但两者都显示相同的内容:"必填!"
在此链接上:如何在一个页面上使用多个h:messages或p:消息?他们谈论类似的问题,但是<p:message>来自主要问题.他们说,解决的办法是设置该属性redisplay的<p:message>设置为true.<h:message>没有这个属性.是否有<h:message>来自redisplay的类似属性<p:message>?
那是什么解决方案?
谢谢!
您需要添加globalOnly="true"到h:messages
<h:messages id="submitMessage" globalOnly="true" />
Run Code Online (Sandbox Code Playgroud)
当您创建提交消息时,将clientId设置为null
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(String.format("File '%s' type '%s' successfully " +
"submitted!", fileName, contentType)));
Run Code Online (Sandbox Code Playgroud)