一尘不染

在JavaScript文件中混合JSF EL

javascript

有没有办法让JSF评估包含JavaScript语言的表达式语言(EL)表达式?

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


阅读 287

收藏
2020-05-01

共1个答案

一尘不染

五种方式:

  1. 在父JSF页面中将其声明为全局变量。
    <script type="text/javascript" src="script.js"></script>
    

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

    <script type="text/javascript" src="script.js"></script>
<script type="text/javascript">var messages = #{bean.messagesAsJson};</script>
  1. 将整个内容<script>放在XHTML文件中,并ui:include用来包含它。

    <script type="text/javascript" src="script.js"></script>
    

  2. *.jsJspServlet(只有当它足以只评价${}表达式)。例如,在web.xml(对<servlet-name>JspServlet可以发现web.xml有问题的servletcontainer的,它通常是jsp)。

    <servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.js</url-pattern>
    

  3. 利用修改后的内容类型使用“旧版本” JSP。重命名script.jsscript.jspJSP并将以下行添加到JSP的顶部(仅在足以仅计算${}表达式的情况下):

    <%@page contentType="text/javascript" %>
    
  4. 让JS在加载过程中ajaxally获取数据。这是一个针对jQuery的示例。

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

    });

2020-05-01