是否可以通过JSF评估Expression Language(EL)表达式包含的JavaScript文件?

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

最佳答案

五种方式:


在父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>

将整个<script>放在XHTML文件中,并使用ui:include包括它。

<script type="text/javascript" src="script.js"></script>
<ui:include src="script-variables.xhtml" />

通过*.js传递JspServlet(仅当足以评估${}表达式时)。例如。在web.xml中(<servlet-name>JspServlet可以在所讨论的servlet容器的web.xml中找到,通常是jsp)。

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

使用带有修改后的内容类型的“旧版本” JSP。将script.js重命名为script.jsp并将以下行添加到JSP的顶部(仅在足以仅评估${}表达式的情况下):

<%@page contentType="text/javascript" %>

让JS在加载过程中ajaxally获取数据。这是一个jQuery目标示例。

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

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

10-13 07:50
查看更多