将bean值拉为String以供Javascript使用

时间:2013-09-24 14:54:13

标签: javascript jquery jsf

我正在尝试根据bean的值设置组件的文本。我正在使用jquery,因为文本根据特定条件而变化。

因此,jquery代码如下所示:

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

Extra bean处理本地化。所以,假设语言环境是法国,文本是Enregister。问题在于,当呈现页面时,代码段看起来像这样

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";

这是有道理的。

我怎样才能实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:5)

JSF在这个问题的上下文中只是一个HTML代码生成器。只需在HTML模板中自己写下这些引号即可。它们是生成的HTML输出的一部分,而不是Java变量的一部分。您知道,JavaScript不与Java / JSF一起运行(即它不是服务器端)。相反,它与HTML一起运行(即它的客户端)。

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

请注意,您仍然需要考虑该值是否正确JS转义,否则如果字符串本身包含JS中的双引号或其他特殊字符(如换行符),整个事情仍会在JavaScript方面中断。 JSF utility library OmniFaces具有EL功能,#{of:escapeJS()}

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

您当然也可以homegrow your own基于例如Apache Commons Lang StringEscapeUtils