【问题标题】:Different result of h:messages after migration from JSF 1.1 to JSF 1.2从 JSF 1.1 迁移到 JSF 1.2 后 h:messages 的不同结果
【发布时间】:2011-12-06 13:00:25
【问题描述】:

从 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" 创建缩进,我不知道如何避免这种情况)。我还发现,对于 JSF 1.1 和 JSF 1.2,在 layout="table" 的情况下生成的 HTML 代码非常不同。

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

【问题讨论】:

  • AFAIK 生成的 HTML 输出应该没有区别。您能否显示导致问题的两个 JSF 1.x 版本的生成 HTML 输出的相关部分?至于使用列表,缩进和项目符号很容易通过一点 CSS 删除。这个解决方案也可以接受吗?
  • JSF 1.1 生成此代码:&lt;table id="eMessages"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;span class="info_with_icon"&gt;Number of TP found is: 0&lt;/span&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; JSF 1.2 &lt;ul id="eMessages" class="messages" title="eMessages"&gt; &lt;li class="info_with_icon_messages"&gt; Number of TP found is: 0 &lt;/li&gt; &lt;/ul&gt; 当我使用列表布局时(表格布局由于某种原因没有带样式,所以我不能使用它)。
  • CSS 类:-.info_with_icon_messages { - -moz-background-clip:边框; -moz-background-origin:填充; -moz-背景大小:自动自动;背景附件:滚动;背景颜色:透明;背景位置:0 0;背景重复:不重复;颜色:蓝色;浮动:无;列表样式图像:无;列表样式位置:外部;列表样式类型:无;文本缩进:15px;所以没有第二种风格的项目符号,但我仍然看到缩进。有什么办法可以不缩进吗?
  • 我更多的是要求表格布局的差异。请编辑您的问题以显示生成的 JSF 1.1 和 1.2 的 HTML,以防layout="table"
  • 嗨BalusC,再次:JSF1.1 &lt;table id="eMessages"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;span class="info_with_icon"&gt;Number of TP found is: 0&lt;/span&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; JSF1.2(这次有表格布局)&lt;table id="eMessages" class="messages"&gt; &lt;tbody&gt; &lt;tr class="info_with_icon_messages"&gt; &lt;td&gt; Number of TP found is: 0 &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; 据我了解, 不能有类属性,我的浏览器没有在这种情况下显示来自“info_with_icon_messages”的任何样式。

标签: css jsf websphere-7 websphere-6


【解决方案1】:

简而言之,JSF 1.1 会将 infoClass 和 consorts 放在 &lt;span&gt;&lt;td&gt;,但 JSF 1.2 会将其放在 &lt;tr&gt; 上。

看起来您正在使用 &lt;tr&gt; 元素不支持的非常特定的 CSS 属性。在这种情况下,您基本上有两种选择:

  1. 更改 CSS 声明以将其应用于 &lt;td&gt;

    .info_with_icon_messages td {
        /* ... */
    }
    
  2. &lt;h:messages&gt; 布局更改为list,并在生成的&lt;ul&gt; 的类上添加以下CSS 属性,在您的情况下为.messages,以删除项目符号和缩进:

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

【讨论】:

  • 谢谢你,BalusC!由于某些原因,选项 2 没有帮助(不明白为什么),但第一个很好!
猜你喜欢
  • 2013-01-27
  • 2015-10-17
  • 2011-06-24
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多