2013-09-24 42 views
2

我試圖根據bean的值設置組件的文本。我爲此使用jquery,因爲文本根據特定條件而變化。將Bean的值作爲字符串用於Javascript使用

所以,jQuery代碼如下所示:

window.onload =function(){ 
    $('.pnx-inline-input').on("change keyup paste", function(){ 
     var saveText = #{extra.Active_Save};     
     $('.save-button .pnx-btn-text').html(saveText); 
}); 

額外豆處理本地化。所以,假設語言環境是法國,文本是註冊。問題是,呈現頁面時,該代碼段看起來像這樣

window.onload =function(){ 
    $('.pnx-inline-input').on("change keyup paste", function(){ 
     var saveText = Enregister;    
     $('.save-button .pnx-btn-text').html(saveText); 
}); 

當然,Enregister沒有在任何地方定義,這將導致錯誤。我需要編碼看起來像

var saveText = "Enregister"; 

這是有道理的。

我該如何做到這一點?謝謝!

回答

5

JSF在這個問題的背景下僅僅是一個HTML代碼生成器。只需在HTML模板中自己寫下這些引號即可。它們是生成的HTML輸出的一部分,而不是Java變量的一部分。你知道,JavaScript不會與Java/JSF一起運行(即它不是服務器端)。相反,它與HTML一起運行(即它是客戶端)。

var saveText = "#{extra.Active_Save}"; 

請注意,您還需要考慮到的值是正確的JS-逃脫,否則整個事情在JavaScript方面仍然會打破如果字符串本身包含在JS雙引號或其他特殊字符,如換行符。該JSF utility library OmniFaces有根本目的的EL功能,#{of:escapeJS()}

var saveText = "#{of:escapeJS(extra.Active_Save)}"; 

你當然也可以homegrow your own基於例如Apache Commons LangStringEscapeUtils

相關問題