Ответ 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>
-
Поместите целое
<script>
в файл XHTML и используйтеui:include
, чтобы включить его.<script type="text/javascript" src="script.js"></script> <ui:include src="script-variables.xhtml" />
-
Передайте
*.js
черезJspServlet
(только если достаточно оценить только выражения${}
). Например. вweb.xml
(<servlet-name>
ofJspServlet
можно найти в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 получает данные ааксиально во время загрузки. Здесь приведен пример jQuery.
$.getJSON('json/messages', function(messages) { $.each(messages, function(key, value) { $.messages[key] = value; }); });