我的目标是使用h:消息来传达用户错误和确认消息.显示这两种不同消息的CSS样式是不同的.实际上我想在确认消息旁边使用一个图像.对于Eg:
<tr> <td><img/></td><td><h:msg></td> </td>.
所以我尝试根据2个不同的客户端ID向Faces Context添加消息
<tr>
<td height="5">
<h:messages style="color:darkred" id="error_message" />
</td>
</tr>
<tr>
<td width="89%" class="InfoMsg" align="center">
<h:messages id="confirm_message" />
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
并在java层
FacesMessage facesMessage = new FacesMessage(Constants.saveMessageConfirm);
FacesContext.getCurrentInstance().addMessage(Constants.STATIC_CONFIRM_MSG_CLIENT_ID, facesMessage);
Run Code Online (Sandbox Code Playgroud)
但是,即使我向客户端ID confirm_message添加消息 - 并且仅向confirm_message添加 - 而不是error_message - 消息以2种不同的样式显示两次(请参阅上面的HTML)
2个问题:
1)这里有什么问题?
2)如果我想在第二个tr中显示td内的图像,并且在确认消息存在时有条件地显示第二个tr - 最好的方法是什么?
谢谢,
Bal*_*usC 41
将h:messages显示所有的消息,这也已经显示在的那些h:message页面.但是,您可以将其设置为仅null使用客户端ID 显示消息globalOnly="true".
<h:messages globalOnly="true" />
Run Code Online (Sandbox Code Playgroud)
您还可以根据以下内容为消息提供不同的样式FacesMessage.Severity:
<h:messages infoClass="info" errorClass="error" />
Run Code Online (Sandbox Code Playgroud)
例如,这个CSS隐藏INFO消息并使ERROR消息变为红色:
.info {
display: none;
}
.error {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用redisplay="false"它告诉它不通过ee显示已显示的消息<h:message>.
<h:messages redisplay="false" />
Run Code Online (Sandbox Code Playgroud)
您只需要确保它在所有其他消息组件之后放置在组件树中.如果需要,您可以使用CSS将其重新定位在顶部的某个位置.
只是要确定,
facesContext.addMessage("clientId", facesMessage);
Run Code Online (Sandbox Code Playgroud)
这将把给定的消息附加<h:message for="clientId">到一个<h:messages id="clientId">不像你想象的那样.
更改<h:messages>为<h:message>
<h:messages显示当前上下文的所有消息,<h:message>显示特定消息。
我相信你想改变id为for给它一个目标,但我可能是错的。
| 归档时间: |
|
| 查看次数: |
44471 次 |
| 最近记录: |