Is there a way to have Expression Language (EL) expressions included JavaScript files be evaluated by JSF?
I was hoping that Seam might have a way around this, but no luck so far. All I want is to be able to use localized messages in my JavaScript functions which are shared across pages.
Since I don't like techniques that won't let the browser cache the localized Strings, I used the following technique to localize JavaScript alerts, etc. It seems a good fit if the Strings that you need in your JavaScript code are different from the ones needed by the Web server:
I then assign the resource string JsFwStrings to the filename of the JavaScript file defining the localized strings for the given language.
For example, the fw_en.properties file contains the entry JsFwStrings=JsFwStrings_en.js
And the JsFwStrings_en.js file contains
Five ways:
Declare it as global variable in the parent JSF page.
Or, if it's in JSON format already.
Put the whole
<script>
in a XHTML file and useui:include
to include it.Pass
*.js
through theJspServlet
(only if it's enough to evaluate only the${}
expressions). E.g. inweb.xml
(the<servlet-name>
ofJspServlet
can be found inweb.xml
of the servletcontainer in question, it's usuallyjsp
).Make use of "good old" JSP with a modified content type. Rename
script.js
toscript.jsp
and add the following line to top of JSP (only if it's enough to evaluate only the${}
expressions):Let JS obtain the data ajaxically during load. Here's a jQuery targeted example.