2011-08-28 6 views
7

私はJSFコンポーネントに@ResourceDependency注釈を使用してJSFページにJavascriptとCSSファイルを追加しています。@ResourceDependencyによってロードされるJavascriptファイルでELを取得する

私のJavascriptファイルでは、別のリソースファイル(JSFが必要とするMETA-INF/resourcesにある.swfファイル)を参照する必要があります。私は#{resource['swf:file.swf']} EL式をJavaScriptコードに入れようとしましたが、解決されません。 exapmleについては

は、サーバーに次のJSファイルの:

var instance = new JSClass(); 
instance.setResourceUrl("#{resource['swf:file.swf']}"); 

ブラウザが取得します。

var instance = new JSClass(); 
instance.setResourceUrl("#{resource['swf:file.swf']}"); 

間違っています。

同じELをCSSファイルに入れても、正しく解決されます。

.instance-css-class { 
    background: url("#{resource['swf:file.swf']}") 
} 

ブラウザが取得する:サーバーで、次のCSSファイルの

.instance-css-class { 
    background: url("/webapp/javax.faces.resource/file.swf.jsf?ln=swf") 
} 
まさに私が必要なものである

が、JSファイルインチ

もちろん、私は(それにCSSクラスを添付して、DOM要素を作成し、必要なスタイルプロパティを読み込み、パース)問題の回避策として、CSSを使用することができます。しかし、それを達成するためのよりエレガントな方法がありますか? JSFライブラリのバグですか(私はMojarra 2.0.3、Jboss 6.1を使用しています)、またはその動作の理由がありますか?

は、 thoseなどの回避策を使用することはできませんので、上記のコードは、タグライブラリの一部であることに注意してください。


編集 - 私は、CSSファイルからCSS属性を取得する方法を見ることができないので、CSSの回避策は、実現不可能であると思われます。だから、(作業中の)回避策も喜んで受け入れられるでしょう。

+0

私は驚いたことに、ELがCSSで評価されたことを知りました。 Mojarraの実装では、Facesリソース要求によって要求されたリソース内でEL式を解決できるResourceHelperを使用します。それは同じタイプのリクエストであるため、ELがJSファイルで評価されないのはなぜかと思います。もし誰かがこれについて何か光を当てることができれば素晴らしいだろう。 – tasel

答えて

0

BalusCは詳細hereに同様の質問に答えました。最初の解決方法は実装が最も簡単ですが、私はあなたが3番目の方法と一緒に行くことをお勧めします。私の意見では、これは正しい方法です。

関連する問題