如何在h:outputText Bold中创建值的一部分?

时间:2015-02-10 13:51:46

标签: html jsf

如何在h:outputText Bold中创建值的一部分? 我想要粗体名称:

<h:outputText value="Normal Text: #{Controller.Object.name}" />

我试过:<h:outputText value="Normal Text: <b>#{Controller.Object.name}</b>" />

得到了这个错误:&#34; 属性&#34;值&#34;的值与元素类型相关联&#34; h:outputText &#34;不得包含&#39;&lt;&#39; 。字符#&34; 在此处和其他网页进行了一些搜索后,发现属性escape="false"可以解决这个问题......但对我来说并没有什么不同,

<h:outputText escape="false" value="Normal Text: <b>#{Controller.Object.name}</b>" />

仍然有同样的错误。

有人有这个问题吗?

2 个答案:

答案 0 :(得分:5)

你真的需要<h:outputText>吗?

在Facelets中,您只需在模板文本中使用EL:

Normal Text: <b>#{Controller.Object.name}</b>

如果您真的坚持使用<h:outputText>,那么您应该手动转义XML实体并使用escape="false"显示它:

<h:outputText value="Normal Text: &lt;b&gt;#{Controller.Object.name}&lt;/b&gt;" escape="false" />

这不仅会读取丑陋,而且还会打开XSS攻击漏洞,以防#{Controller.Object.name}是客户端控制的值。

另见:

答案 1 :(得分:0)

对我来说,将<p></p>放在.properties文件中的文本中或定义Controller.Object.name值的任何地方都更有意义。更清洁,您也不必弄乱编码符号。