从JSF 1.1迁移到JSF 1.2后,h:消息的结果不同

时间:2011-12-06 13:00:25

标签: css jsf websphere-7 websphere-6

从WAS 6.0 + JSF 1.1迁移到WAS 7.0 + JSF 1.2之后,我遇到了页面呈现问题。主要问题在于以下代码:

<h:messages rendered="#{!webData.facesMessagesEmpty}" styleClass="messages"
showSummary="true" showDetail="false" title="Messages" layout="table" id="eMessages"
infoClass="info_with_icon" warnClass="warn_with_icon" errorClass="error_with_icon"
fatalClass="fatal_with_icon" />

此代码在WAS 6.0 + JSF 1.1下正常工作,但在WAS 7.0 + JSF 1.2下不使用样式。我做了一点调查,发现这个问题仅适用于layout =“table”。如果我使用layout =“list”,那么样式就可以了。不幸的是我需要这里的表(因为layout =“list”创建缩进,我不知道如何避免这种情况)。另外我发现在layout =“table”的情况下生成的HTML代码对于JSF 1.1和JSF 1.2来说是非常不同的。

所以我的问题 - 是否有可能为WAS 7.0 + JSF 1.2强制旧式(JSF 1.1)HTML生成?我试着谷歌但却找不到答案...

1 个答案:

答案 0 :(得分:1)

简而言之,JSF 1.1会将infoClass和consorts放在<span><td>,但JSF 1.2会将其放在<tr>上。

看起来你正在使用<tr>元素不支持的非常具体的CSS属性。在这种情况下,你基本上有两个选择:

  1. 更改CSS声明,将其应用于<td>

    .info_with_icon_messages td {
        /* ... */
    }
    
  2. <h:messages>布局更改为list,并在生成的<ul>的类中添加以下CSS属性(在您的案例.messages中)删除子弹和缩进:

    .messages {
        list-style-type: none;
        margin: 0; 
        /* ... */
    }