我最终在我的 JSF 页面(xhtml)中得到了这个:
<c:set var="messageList" value="#{facesContext.messageList}" />
<c:set var="maxSev" value="#{facesContext.maximumSeverity.ordinal}" />
<ui:repeat value="${messageList}" var="fm" >
<c:choose>
<c:when test="${fm.severity.ordinal eq 0}">
<c:set var="summaryStyleClass" value="outcome"/>
<c:set var="detailStyleClass" value="outcome_details"/>
</c:when>
<c:when test="${fm.severity.ordinal eq 1}">
<c:set var="summaryStyleClass" value="warning_title"/>
<c:set var="detailStyleClass" value="warning"/>
</c:when>
<c:when test="${fm.severity.ordinal eq 2}">
<c:set var="summaryStyleClass" value="error_title"/>
<c:set var="detailStyleClass" value="error"/>
</c:when>
<c:when test="${fm.severity.ordinal eq 3}">
<c:set var="summaryStyleClass" value="fatal"/>
<c:set var="detailStyleClass" value="fatal_details"/>
</c:when>
</c:choose>
</ui:repeat>
<div class="${detailStyleClass}" >
<div class="${summaryStyleClass}">
<ui:repeat value="${messageList}" var="fm" >
<c:choose>
<c:when test="${fm.severity.ordinal eq maxSev}">
${fm.summary}
</c:when>
</c:choose>
</ui:repeat>
</div>
<ul>
<ui:repeat value="${messageList}" var="msg">
<li><h:outputText value="${msg.detail}"/></li>
</ui:repeat>
</ul>
</div>
我确定我在这里打破了一种模式,但是该部分似乎无法在它可以解析 summaryStyleClass 和 detailStyleClass 变量的地方工作。我正在遍历它们,因为我需要根据页面的最高严重性消息来设置消息样式。这是我在浏览器页面中得到的渲染输出:
<div>
<div>Warning:</div>
<ul>
<li>Warning message.</li>
</ul>
</div>
注意没有样式...