javascript - 在 JavaScript 文件中混合 JSF EL

标签 javascript jsf seam el

有没有办法让Expression Language (EL) 表达式包含的 JavaScript 文件会被 JSF 评估吗?

我希望 Seam 可以解决这个问题,但到目前为止运气不好。我想要的只是能够在跨页面共享的 JavaScript 函数中使用本地化消息。

最佳答案

五种方式:

  1. 在父 JSF 页面中将其声明为全局变量。

    <script type="text/javascript" src="script.js"></script>
    <script type="text/javascript">
        var messages = [];
        <ui:repeat value="#{bean.messages}" var="message">
            messages['#{message.key}'] = '#{message.value}';
        </ui:repeat>
    </script>
    

    或者,如果它已经是 JSON 格式。

    <script type="text/javascript" src="script.js"></script>
    <script type="text/javascript">var messages = #{bean.messagesAsJson};</script>
    
  2. 把整个<script>在 XHTML 文件中并使用 ui:include包括它。

    <script type="text/javascript" src="script.js"></script>
    <ui:include src="script-variables.xhtml" />
    
  3. 通过 *.js通过JspServlet (仅当足以评估 ${} 表达式时)。例如。在 web.xml (<servlet-name>JspServlet 可以在相关servletcontainer 的web.xml 中找到,通常是jsp )。

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    
  4. 使用具有修改内容类型的“好旧”JSP。重命名 script.jsscript.jsp并将以下行添加到 JSP 的顶部(仅当它足以计算 ${} 表达式时):

    <%@page contentType="text/javascript" %>
    
  5. 让JS在加载时通​​过ajax方式获取数据。这是一个 jQuery有针对性的例子。

    $.getJSON('json/messages', function(messages) {
        $.each(messages, function(key, value) {
            $.messages[key] = value;
        });
    });
    

关于javascript - 在 JavaScript 文件中混合 JSF EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2547814/

相关文章:

jsf - PrimeFaces - SelectOneMenu 中的工具提示

java - 生成丰富的:menu hierarchical structure from rich:tree

java - 使用重定向时 Seam 对话突然结束

javascript - Jquery 每个函数都以 div 的子代为目标

java - XML Android 与 Html 5 性能和关注点?

jsf - 我需要 jsf-api 或 jsf-impl 还是两者都需要才能开始使用 JSF?为什么不合并?

JSF 如何临时禁用验证器以保存草稿

java - 从 Seam 3 到 Apache DeltaSpike (seam-beans.xml)

javascript - ASP.NET MVC 操作未获取参数值

javascript - 将变量分配给变化的div