javascript - 未在外部 JavaScript 文件中评估 JSF bean 属性

标签 javascript jsf jakarta-ee el

如果我想从 JavaScript 中评估 JSF bean 属性,我发现如果 JavaScript 片段在 xhtml 文件中,它就可以工作,但当 JavaScript 片段在单独的 js 文件中时,它就不起作用。

所以,这是可行的:

index.xhtml

...
<h:body>
    <script type="text/javascript" src="resources/Javascript/jquery/jquery-1.7.2.js" />
    <script type="text/javascript" >
        $(document).ready(function() {
            alert('#{myBean.myProperty}');
        });
    </script>        
</h:body>

但这并不评估 ManagedBean 的属性:

index.xhtml

...
<h:body>
    <script type="text/javascript" src="resources/Javascript/jquery/jquery-1.7.2.js" />
    <script type="text/javascript" src="resources/Javascript/MyJS.js" />
</h:body>

MyJS.js

$(document).ready(function() {
    alert('#{myBean.myProperty}');
});

在第二种情况下,警告框包含未计算的字符串 #{myBean.myProperty}

如何使它从外部 js 文件运行?

最佳答案

另一种解决方案是将您的 *.js 文件更改为 *.xhtml 并将其包含在“”中。为避免解析器提示在您的 *.xhtml 文件中使用了 &、< 和 >,请在其周围加上 CDATA 标记。这样做的缺点是如果其他页面正在使用 *.js 文件,浏览器将无法缓存它。

MyJS.xhtml(从 MyJS.js 更改)

<xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">

<h:body>
<ui:composition>

<script type="text/javascript">
//<![CDATA[
  ...your JavaScript code here...
//]]>
</script>

</ui:composition>
</h:body>
</html>

在您的 index.xhtml 文件中,执行以下操作:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">
  ...
<ui:include src="MyJS.xhtml" />

关于javascript - 未在外部 JavaScript 文件中评估 JSF bean 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11491085/

相关文章:

javascript - 如何将图像URI转换为字节Expo

JSF 验证。这可以简化吗?

java - 使用 Java 反射动态创建 JSF 表单

css - 如何将多个 CSS 文件添加到一个皮肤?

java - Glassfish 5.1 服务器在启用安全管理后无法启动(NoClassDefFoundError : sun/security/ssl/HelloExtension)

javascript - 将 JS 包含到 Chrome 扩展的 JS 中

javascript - 模态窗口不出现

javascript - Angular JS - 如何强制浏览器记录历史记录以进行快速路由?

java - Wicket 口更改标签/文本字段值

java - 为什么在 TomEE 上远程调用 EJB 时会收到 AuthenticationException?