javascript - 将 bean 值提取为字符串以供 Javascript 使用

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

这才有意义。

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

最佳答案

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

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

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

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

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

关于javascript - 将 bean 值提取为字符串以供 Javascript 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985019/

相关文章:

javascript - 为什么 Flexigird 不能在 IE 上运行

JSF 2 -- 永久重定向 (301)

javascript - 等待 ".then"解决

javascript - 如何将选项从 HTML 推送到 JS 中的对象数组?

javascript - 获取数据属性 == 某物的元素

javascript - 悬停内容也覆盖同级 div

java - JSF setLocale 不能正常工作

jsf - 如何在 Primefaces 数据表中自定义分页

javascript - 谷歌样本上的基本 Action ?

jquery - 在更改事件上启用电话调用功能 (jQuery)