1

マークアップに次のオーディオ タグがあります。

<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 はファイル名の子のように見えるため、これは明らかに機能していません。ドットをエスケープするにはどうすればよいですか?

4

2 に答える 2

3

を使用してパラメータ化し<ui:param>ます。

<ui:param name="resourceIdentifier" value="sounds:#{cc.attrs.filename}.mp3" />
<source src="#{resource[resourceIdentifier]}" type="audio/mpeg" />
于 2012-07-13T02:51:35.983 に答える
2

使用したいのは、Facelets の連結関数です。

こちら で説明されているように作成するか、プロジェクトにOmniFacesをセットアップして、次のように、優れた文字列操作関数を使用できるようにします。

<source src="#{resource[of:concat('sounds:', cc.attrs.filename)]}"
    type="audio/mpeg" />
于 2012-07-12T22:05:21.237 に答える