2014-01-30 159 views
0

在我的JSF应用程序中,我尝试使用fn:replace()替换"""。我试过如下:如何使用fn:replace()将两个双引号替换为一个双引号

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

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

javax.faces.view.facelets.FaceletException:错误解析/test.xhtml:错误追述[行:20 ]元素类型“h:outputText”必须后跟任一属性规范,“>”或“/>”。

相同的代码正在为其他charecters像下面的一个:

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

我如何可以替换使用fn:replace()由两个双引号一个双引号?

+0

这不是基于正则表达式的替换。这只是基于字符的替换。这就像你使用'String#replace()'方法,而不是'replaceAll()'方法。请不要混淆它们。我从你的问题中删除了对正则表达式的不正确引用。 – BalusC

回答

1

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

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