0

我有一个 JSF 数据表,它成功地根据搜索显示数据。但是,我不确定如何在特定列中选择性地加粗某些文本数据。

所以,例如,我想要这个文本......

这是 h:column 中的一些文本

在页面上显示这样...

这是h:column中的一些文本

这是我的数据表的样子

结果:

<h:dataTable var="results"
             value="#{logSearcherBean.results}"
             border="1">
    <h:column>#{results.logName}</h:column>
    <h:column>#{results.matchLine}</h:column>
</h:dataTable>
4

2 回答 2

1

您可以自制一个EL 函数来操作列值并返回所需的 HTML,

<h:outputText value="#{my:highlight(results.logName, logSearcherBean.query)}" escape="false" />

(请注意,这是由于,这是字面显示 HTML 所必需的,如果是一个完全由最终用户控制的值,则escape="false"对 XSS 攻击也很敏感)logName

或者抓取操纵返回的 HTML 的 JavaScript/jQuery,另请参阅这个相关问题:Highlight a word with jQuery

于 2012-11-01T16:35:26.640 回答
0

大家好,

                    <p:column id="lastName"
                              headerText="Last Name">
                        <h:outputText value="#{person.lastName}" style="#{myBean.getStyle(person.lastName)}"/>
                    </p:column>

在 bean 中:

public String getStyle(String str) {
    return str.equals(keyword) ? "background-color: yellow" : "";
}

所有最好的和快乐的编码!

于 2021-01-12T13:57:59.437 回答