Unfortunatedly I am still using jsps instead of facelets.
Escaping with slashes or backslashes does not work.
EL really sucks.

I do now the following:

attribute="#{MyBean.checkA?'realJsFunction':'dummyJsFunction'}('staticvalue','#{beanA.value}');"

Where dummyJS is an empty javascript function.
A disadvanatage is that the dummy stuff is also rendered to the client.


Thanks for any help 
Michael


-----Original Message-----
From: Mike Kienenberger [mailto:[EMAIL PROTECTED] 
Sent: Freitag, 30. März 2007 15:36
To: MyFaces Discussion
Subject: Re: escaping in EL?

So what you really want is

#{MyBean.checkA
    ? 'doJS('staticvalue',' + beanA.value + ');'
    : 'alert('hello'));' "

Some of the issues I see

- You need to somehow escape the single quotes in the javascript
- You need to be able to concat the doJS expression.

I've solved the second issue by writing a static concat function in
facelets.   That's only an option if you're using facelets, though.

I don't know if there's a way to escape a single quote in EL.  I'd
probably solve that one with a static function that returns a single
quote in facelets as well.  Either that, or stick it in as a managed
bean.


On 3/30/07, Michael Heinen <[EMAIL PROTECTED]> wrote:
> This does not work.
>
> The "?" must be part of the EL expression, or ?
>
> What I want is that if MyBean.checkA is true, then  
> doJS('staticvalue','#{beanA.value}'); should be printed into the attribute 
> value.
> This expression has to be in single quotes.
> The problem is that the JavaScript parameters in this function call have to 
> be also in single quotes.
>
> Something like your suggestion:
> onclick=#{MyBean.checkA}?'doJS('staticvalue','#{beanA.value}');':'alert('hello'));'"
> is rendered as
>
> true?'doJS('staticvalue','bla');':'alert('hello'));'
>
> Michael
>
> -----Original Message-----
> From: Mike Kienenberger [mailto:[EMAIL PROTECTED]
> Sent: Donnerstag, 29. März 2007 17:42
> To: MyFaces Discussion
> Subject: Re: escaping in EL?
>
> Are you trying to do this?
>
> onclick=#{MyBean.checkA}?'doJS('staticvalue','#{beanA.value}');':'alert('hello'));'"
>
> Only put #{} around parts you want interpreted by EL.
>
> On 3/29/07, Michael Heinen <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> >
> > I want to express the following Javascript function call via EL:
> >
> >
> >
> > <sometag
> >
> > onclick=#{MyBean.checkA?'doJS('staticvalue','#{beanA.value}');':'alert('hello'));'}"
> >
> > </sometag>
> >
> >
> >
> > How can I do this ?
> >
> > Is there any way to escape this stuff ?
> >
> >
> >
> > Thanks,
> >
> > Michael
>
>

Reply via email to