2011-10-31 95 views
0

我正面臨着使用MyFaces 2.0中的h:outputscripts中的CDATA塊的一些問題......但我不知道是否應該避免在JSF2中使用CDATA,或者如果它是因爲我做錯事。
也許是因爲我在許多複合組件中使用了許多腳本...
事實是,當我有一些包含CDATA塊包圍腳本的組合組件時,頁面中的其他腳本不起作用。
刪除CDA可解決此問題。 儘管如此,我有一個問題,使用CDATA塊使我的複合組件的一些錯誤說,當試圖使用f:ajax render屬性呈現組件時,無法在類NamingContainer上找到組件的屬性。 Here is the workaround
刪除圍繞我的腳本的CDATA解決了這個問題。
所以我的問題是:我是唯一一個遇到CDATA塊和JSF2(MyFaces)問題嗎?JSF2 MyFaces和CDATA讓f:ajax渲染失敗

+1

爲什麼不把腳本放在單獨的文件中? –

+0

我剛剛嘗試過,但似乎沒有工作。事實上,我的腳本是以複合組件的組件爲目標的,我在腳本中使用了#{cc.clientID}。所以我認爲,當外化時,js不會取代#{cc.clientID}的實際值...
是否有外部化js獲取它的方法? – boblemar

回答

1

這是一個已知問題。詳細信息請參見MYFACES-3339。它已經修復了,所以你可以試試最新的代碼HERE,它將包含在2.1.4和2.0.10中。

+0

謝謝。我仍然在2.0.7。當2.0.10可用時,我會進一步嘗試。 – boblemar

1

如果您是唯一有問題的人,我無法回答。我至少可以回答說,在一個XML文件中使用JS代碼是一個不好的做法。 JS代碼是不正確的XML。擺弄JS代碼中的轉義XML特殊字符或將JS代碼放入CDATA塊是很醜陋的。它給JSF ajax響應帶來麻煩反過來是一個不同的故事。從技術上講,這將是JSF實現中使用的一個錯誤。但從另一方面來說,你實際上練習的是一種不良習慣。

只需將JS代碼放入您自己的.js文件中即可,該文件由您在<h:outputScript>中引用。

<cc:implementation> 
    <h:outputScript library="foo" name="js/your-cc-script.js" target="head" /> 
    ... 
</cc:implementation>