加載我使用@ResourceDependency
標註在JSF組件的JavaScript和CSS文件添加到我的JSF頁面。獲得一個EL JavaScript文件中,通過@ResourceDependency
在我的JavaScript文件,我需要參考其他資源文件(.swf文件,它位於META-INF /資源,JSF需要)。我試圖在我的javascript代碼中添加一個#{resource['swf:file.swf']}
EL表達式,但它不會得到解決。
對於exapmle,在服務器下面的JS文件:
var instance = new JSClass();
instance.setResourceUrl("#{resource['swf:file.swf']}");
瀏覽器獲得:
var instance = new JSClass();
instance.setResourceUrl("#{resource['swf:file.swf']}");
這是不對的。
當我在CSS文件中放入相同的EL時,它會得到正確解決。對於服務器中的以下CSS文件:
.instance-css-class {
background: url("#{resource['swf:file.swf']}")
}
瀏覽器獲得:
.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屬性。因此,任何(工作)解決方法都會很樂意接受。
我剛剛發現,令我驚訝的是,EL是在CSS中評估的。 Mojarra實現使用一個ResourceHelper,它能夠在Faces Resource Request請求的資源內解析EL Expressions。這就是爲什麼我不知道EL是不是在JS文件中評估,因爲它是相同類型的請求。如果任何人都可以闡明這一點,那將是非常棒的。 – tasel