如何使用fn:replace()用两个双引号替换一个双引号

时间:2014-01-30 04:52:18

标签: jsf-2 el

在我的JSF应用程序中,我尝试使用fn:replace()"替换为""。我尝试了以下方法:

<h:outputText value="#{fn:replace(str, '\"', '\"\"')}" />

但是,它会导致XML解析异常:

  

javax.faces.view.facelets.FaceletException:Error Parsing /test.xhtml:Error Traced [line:20]元素类型“h:outputText”必须后跟属性规范,“&gt;”或“/&gt;”。

相同的代码适用于下面的其他字符:

<h:outputText value="#{fn:replace(str, 'a', 'b')}" />

如何使用fn:replace()两个双引号替换双引号?

1 个答案:

答案 0 :(得分:1)

确实,这是令人讨厌的。 "在XML中有特殊处理。它表示属性值的开始和结束。最好的办法是在<c:set>的帮助下将其参数化为另一个变量。

<c:set var="doublequote" value='"' />
<c:set var="twodoublequotes" value='""' />
<h:outputText value="#{fn:replace(bean.string, doublequote, twodoublequotes)}" />
相关问题