2

我正在尝试根据 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 处理本地化。所以,假设语言环境是法国,文本是注册。问题是当呈现页面时,代码段看起来像这样

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

这才有意义。

我怎样才能做到这一点?谢谢!

4

1 回答 1

5

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

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

请注意,您仍然需要考虑该值已正确 JS 转义,否则如果字符串本身包含双引号或 JS 中的其他特殊字符(例如换行符),整个事情仍然会在 JavaScript 端中断。JSF 实用程序库OmniFaces有一个 EL 函数,用于#{of:escapeJS()}

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

当然,您也可以基于例如Apache Commons Lang自行开发。 StringEscapeUtils

于 2013-09-24T14:58:31.423 回答