Warren Bell wrote:
I want to create a JavaScript alert window with a message from a resource
bundle when I have a message to display. Getting the message is no problem,
but getting it into the JavaScript is.
<script language="JavaScript" type="text/JavaScript">
function displayMessage()
{
var message = "MESSAGE HERE";
if(message == "")
{
}
else
{
alert(message);
}
}
</script>
<body onload="displayMessage()">
I want to replace "MESSAGE HERE" with #{mainMenu.alertMessage}.
#{mainMenu.alertMessage} would be an empty string or have a message. I am
getting var message = "#{mainMenu.alertMessage}" instead of the value of
#{mainMenu.alertMessage}.
Is there a way using MyFaces to achieve this?
I think in the next release of JSP this will be possible (EL expressions
evaluated in the body of the JSP page). However that's no consolation
for you now :-) [and I might be wrong anyhow...]
Right now, the only place an EL expression #{..} is evaluated is in the
attribute of a JSF tag, so your approach above won't work.
You might be able to do something like this:
<t:div style="display:none" id="mymessage" forceid="true">
<h:outputText value="#{...}"/>
</t:div>
to force some text to be output in a named div, but not visible to the
user. Then in your javascript you could do:
var message = document.getElementById("mymessage").innerHtml();
alert(message);
The alternative would be to write a component that can emit arbitrary
text as a script variable, eg
<t:var name="message" value="#{...}"/>
which generates something like:
<script>var message="..."</script>
There's the t:stylesheet tag which is sort of in this spirit.
Note that writing a custom JSP component is sadly much more complicated
than it should be :-(
Regards,
Simon