【发布时间】:2013-10-08 13:34:08
【问题描述】:
我的页面上有一个命令按钮。
<h:commandButton id="makeSearch" value="#{msg.makeWycena}">
<f:ajax event="click" render="@all" listener="#{searchBean.makeSearch()}"/>
</h:commandButton>
makeSearch() 方法首先检查数据库中的值,如果这个值是null,它会执行一些逻辑。但是当值不是null 时,我想显示一条错误消息。
出于这个原因,我考虑过制作 <h:outputtext rendered = {not null XXX}/> 并制作特殊变量 XXX,但我很确定它可以用普通的 <h:message /> 形式完成,但找不到方法。
我的代码如下所示:
else {
FacesContext fc = FacesContext.getCurrentInstance();
fc.addMessage(null , new FacesMessage("XXXXXXXX"));
return null;
}
我希望消息 XXXXXXXXX 显示在:
<h:message for="makeSearch" globalOnly="true" style="color:red;margin:8px;"/>
在我之前发布的命令按钮旁边。现在它呈现在页面底部
经过一些更改,我的代码现在看起来像这样:
<h:form id="detailsForm" prependId="false">
<h:commandButton id="makeSearch" value="#{msg.makeWycena}">
<f:ajax event="click" render="@all" listener="#{searchBean.makeSearch()}"/>
</h:commandButton>
<h:message for="makeSearch" id ="makeSearchError" style="color:red;margin:6px;left-margin:10px;"/>
和 bean 代码:
else {FacesContext.getCurrentInstance().addMessage("detailsForm:makeSearchError" ,
new FacesMessage("XXXXXXXXXXXX")); }
但仍然。消息不在 h:message 中呈现。我也试过 detailForm:makeSeach 也没有帮助
【问题讨论】:
-
使用
<h:messages>生成来自服务器的消息,而不是当前的<h:message>。 -
在我的特定页面中,我只有一条消息来显示这种方法很好,我会使用这个提示 :) 但是,我仍然想知道如何做,以防我几乎没有错误将来要在单独的消息框中显示的消息。
-
From [
FacesContext#addMessage](docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/…, javax.faces.application.FacesMessage)) javadoc,第一个参数必须是客户端id。由于您正在设置null,这意味着它没有找到任何组件,因此它将直接转到<h:messages>。有关更多信息,请参阅此 Q/A:stackoverflow.com/q/315804/1065197 -
FacesContext.getCurrentInstance().addMessage("detailsForm:makeSearchError" , new FacesMessage("XXXXXXXXXXXXX"));我试过了 - 消息仍然呈现在消息框之外,所以我将消息更改为消息
标签: jsf