jsf h:messages/h:特定clientId的消息
我想用编程设置的ClientID显示不同的FacesMessage。在我看来,我曾经jsf h:messages/h:特定clientId的消息,jsf,facelets,message,Jsf,Facelets,Message,我想用编程设置的ClientID显示不同的FacesMessage。在我看来,我曾经 <h:outputText value="warnMessages #{facesContext.getMessageList('warnMessages')}" /> <h:outputText value="validationMessages #{facesContext.getMessageList('validationMessages')}" /> 用于调试。信息都在那
<h:outputText value="warnMessages #{facesContext.getMessageList('warnMessages')}" />
<h:outputText value="validationMessages #{facesContext.getMessageList('validationMessages')}" />
用于调试。信息都在那里。但是
<h:messages for="warnMessages" />
<h:message for="warnMessages" />
没有显示任何内容。只有
<h:messages />
工作。但我想有不同的消息框一起显示。我该怎么做?谢谢
Marcelh:messages显示所有消息,以及缺少客户端id的消息。因此不允许使用
for
属性
h:message
中的for
属性必须与另一个组件的id
属性匹配:在您的示例中,您必须设置id=“warnMessages”
在您想要的任何h:inputText
中。看起来您正在滥用客户端ID将自定义/全局消息与正常验证消息分开
你不应该那样做。如果要显示自定义/全局消息,只需不指定任何客户端ID即可。例如,将其设置为null
context.addMessage(null, facesMessage);
这样他们都会出现在
<h:messages globalOnly="true" />
并以通常的方式使用消息的结尾
<h:inputText id="foo" required="true" />
<h:message for="foo" />
或
将自定义消息添加到JSF页面并不难。但是你需要做一些努力来完成所有需要的事情 e、 g
还记得在某个事件发生时使用ajax更新输出文本消息,这将调用bean的
warnMessages()
和infoMessages()
方法。谢谢,我仍然添加了“编程”添加的faces消息不会显示input
,而不是output
。验证消息将与输入组件相关联。我使用了,但组件仍然没有显示任何内容。问题可能是id。在Java方面,您必须使用clientId,它并不总是与您在页面源中指定的id相同。请参阅我有验证,它执行了单字段验证。我不使用JSF或Bean验证,而是使用自定义验证。此外,我想显示警告消息,错误消息,工作流消息,也在组合。所有FacesMessage都是通过编程方式添加的。似乎我无法直接将此类消息添加到h:message(s)组件中。对吗?一条带有globalOnly=“true”的h:messages是不够的。谢谢
<h:messages globalOnly="false" />
<h:outputText value="#{bean.warnMessages}" />
<h:outputText value="#{bean.infoMessages}" />
...
public class Bean {
...
public String warnMessages() {
// concatenate (and add new lines to) all the WARNING string messages, with
// html+css formatting, together and
return warnings;
}
public String infoMessages() {
// concatenate (and add new lines to) all the INFO string messages, with
// html+css formatting, together and
return infos;
}
}