jsf - el escape dot

时间:2012-07-12 17:22:58

标签: jsf escaping el

我的标记中有以下音频标记:

<audio id="audio" preload="auto" hidden="true">
    <source src="#{resource['sounds:filename.mp3']}" type="audio/mpeg" />
    <source src="#{resource['sounds:filename.ogg']}" type="audio/ogg" />
    <embed src="#{resource['sounds:filename.mp3']}" hidden="true"/>
</audio>

我想将它包装在一个自定义复合组件中,该组件将文件名作为属性。

<source src="#{resource['sounds:cc.attrs.filename.mp3']}" type="audio/mpeg" />

这显然不起作用,因为.mp3现在似乎是文件名的孩子。 我如何逃离点?

2 个答案:

答案 0 :(得分:3)

使用<ui:param>对其进行参数化。

<ui:param name="resourceIdentifier" value="sounds:#{cc.attrs.filename}.mp3" />
<source src="#{resource[resourceIdentifier]}" type="audio/mpeg" />

答案 1 :(得分:2)

您想要使用的是Facelets的连接函数。

您的项目中create one as described here或设置OmniFaces,因此您可以使用其优秀的String manipulation functions,如下所示:

<source src="#{resource[of:concat('sounds:', cc.attrs.filename)]}"
    type="audio/mpeg" />