You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Renzo Tomaselli <re...@tecnotp.it> on 2008/01/28 12:54:00 UTC

[Trinidad] using multiple triggers

Hi, while using multiple triggers where a few names are achieved from 
EL, I get an exception from ELSupport.coerceToType(obj, type).
E.g. while:

    partialTriggers="multiSelect multiAdd multiRemove multiUpdate"

works fine,

    partialTriggers="multiSelect #{multiAdd} multiRemove #{multiUpdate}"

does not work (having set multiAdd="multiAdd" in the component including 
the current one.
In coerceToType call, I see obj="multiSelect multiAdd multiRemove 
multiUpdate", and type=java.lang.String[].
While it would be easy to patch ELSupport to split the incoming string 
so that matching succeeds - I wonder if I'm doing anything else wrong.

-- Renzo



Re: [Trinidad] using multiple triggers

Posted by Andrew Robinson <an...@gmail.com>.
Forget that last question, I missed the *obvious* ui:component

Try to add a debugger to you setup and debug into:

./trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/TrinidadComponentHandler.java
./trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/facelets/StringArrayPropertyTagRule.java

They are the ones responsible for creating the string array.

What is most likely happening (I haven't debugged it), is that the String[]
is created during facelets compilation. The EL resolver will not step into
an array. So your EL will not be evaluated.

I think your best bet to mix them is to write a facelets function that does
the work.

On Jan 30, 2008 9:10 AM, Andrew Robinson <an...@gmail.com>
wrote:

> Is this JSP or facelets? The problem is probably in the tag or the
> TagHandler. I think the logic looked good to me in the TagHandler, but I am
> not positive and I don't use JSP unless I am forced too :)
>
> -Andrew
>
>
> On Jan 30, 2008 4:35 AM, Renzo Tomaselli <re...@tecnotp.it>
> wrote:
>
> >  This is nearly what I did:
> >
> >     <ui:component>
> >         <tr:panelGroupLayout id="anyValue"
> >             <cx:multiHolder triggers="a b c"/>
> >             ...
> >
> > where subcomponent multiholder is:
> >
> >     <ui:component>
> >         <tr:panelGroupLayout  partialTriggers="#{triggers}">
> >         ...
> >
> > but it doesn't work, array identity is lost after going through EL
> > resolution.
> >
> > -- Renzo
> >
> >
> > Matthias Wessendorf wrote:
> >
> > or a #{stringThatHasMyTriggers},
> > where the String is:
> > String triggers = "comp1 comp2 comp3";
> >
> > -M
> >
> > On Jan 30, 2008 12:17 PM, Renzo Tomaselli <re...@tecnotp.it> <re...@tecnotp.it> wrote:
> >
> >
> >   Matthias,
> >  in this case I had some names forced by outer components - which included
> > the current one - because they needed to know them for own partial
> > triggering.
> >  Nevertheless your suggestion doesn't work either (just tried), same error.
> > I feel that using EL for partial triggers fails, since the resolved value
> > turns out to be a string, while a string[] is expected.
> >
> >  -- Renzo
> >
> >
> >  Matthias Wessendorf wrote:
> >  Hi
> >
> > On Jan 28, 2008 12:54 PM, Renzo Tomaselli <re...@tecnotp.it> <re...@tecnotp.it>
> > wrote:
> >
> >
> >  Hi, while using multiple triggers where a few names are achieved from
> > EL, I get an exception from ELSupport.coerceToType(obj, type).E.g. while:
> >
> >  partialTriggers="multiSelect multiAdd multiRemove multiUpdate"
> >
> > works fine,
> >
> >  partialTriggers="multiSelect #{multiAdd} multiRemove #{multiUpdate}"
> >
> > does not work (having set multiAdd="multiAdd" in the component including
> > the current one.
> > In coerceToType call, I see obj="multiSelect multiAdd multiRemove
> > multiUpdate", and type=java.lang.String[].
> > While it would be easy to patch ELSupport to split the incoming string
> > so that matching succeeds - I wonder if I'm doing anything else wrong.
> >
> >  why not doing this:
> > partialTriggers="#{stringArrayThatContainsAllMyTriggers}" instead of
> > "multi el" ?
> >
> > -M
> >
> >
> >
> >  -- Renzo
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
>

Re: [Trinidad] using multiple triggers

Posted by Andrew Robinson <an...@gmail.com>.
Is this JSP or facelets? The problem is probably in the tag or the
TagHandler. I think the logic looked good to me in the TagHandler, but I am
not positive and I don't use JSP unless I am forced too :)

-Andrew

On Jan 30, 2008 4:35 AM, Renzo Tomaselli <re...@tecnotp.it> wrote:

>  This is nearly what I did:
>
>     <ui:component>
>         <tr:panelGroupLayout id="anyValue"
>             <cx:multiHolder triggers="a b c"/>
>             ...
>
> where subcomponent multiholder is:
>
>     <ui:component>
>         <tr:panelGroupLayout  partialTriggers="#{triggers}">
>         ...
>
> but it doesn't work, array identity is lost after going through EL
> resolution.
>
> -- Renzo
>
>
> Matthias Wessendorf wrote:
>
> or a #{stringThatHasMyTriggers},
> where the String is:
> String triggers = "comp1 comp2 comp3";
>
> -M
>
> On Jan 30, 2008 12:17 PM, Renzo Tomaselli <re...@tecnotp.it> <re...@tecnotp.it> wrote:
>
>
>   Matthias,
>  in this case I had some names forced by outer components - which included
> the current one - because they needed to know them for own partial
> triggering.
>  Nevertheless your suggestion doesn't work either (just tried), same error.
> I feel that using EL for partial triggers fails, since the resolved value
> turns out to be a string, while a string[] is expected.
>
>  -- Renzo
>
>
>  Matthias Wessendorf wrote:
>  Hi
>
> On Jan 28, 2008 12:54 PM, Renzo Tomaselli <re...@tecnotp.it> <re...@tecnotp.it>
> wrote:
>
>
>  Hi, while using multiple triggers where a few names are achieved from
> EL, I get an exception from ELSupport.coerceToType(obj, type).E.g. while:
>
>  partialTriggers="multiSelect multiAdd multiRemove multiUpdate"
>
> works fine,
>
>  partialTriggers="multiSelect #{multiAdd} multiRemove #{multiUpdate}"
>
> does not work (having set multiAdd="multiAdd" in the component including
> the current one.
> In coerceToType call, I see obj="multiSelect multiAdd multiRemove
> multiUpdate", and type=java.lang.String[].
> While it would be easy to patch ELSupport to split the incoming string
> so that matching succeeds - I wonder if I'm doing anything else wrong.
>
>  why not doing this:
> partialTriggers="#{stringArrayThatContainsAllMyTriggers}" instead of
> "multi el" ?
>
> -M
>
>
>
>  -- Renzo
>
>
>
>
>
>
>
>
>
>
>

Re: [Trinidad] using multiple triggers

Posted by Matthias Wessendorf <ma...@apache.org>.
or a #{stringThatHasMyTriggers},
where the String is:
String triggers = "comp1 comp2 comp3";

-M

On Jan 30, 2008 12:17 PM, Renzo Tomaselli <re...@tecnotp.it> wrote:
>
>  Matthias,
>  in this case I had some names forced by outer components - which included
> the current one - because they needed to know them for own partial
> triggering.
>  Nevertheless your suggestion doesn't work either (just tried), same error.
> I feel that using EL for partial triggers fails, since the resolved value
> turns out to be a string, while a string[] is expected.
>
>  -- Renzo
>
>
>  Matthias Wessendorf wrote:
>  Hi
>
> On Jan 28, 2008 12:54 PM, Renzo Tomaselli <re...@tecnotp.it>
> wrote:
>
>
>  Hi, while using multiple triggers where a few names are achieved from
> EL, I get an exception from ELSupport.coerceToType(obj, type).
> E.g. while:
>
>  partialTriggers="multiSelect multiAdd multiRemove multiUpdate"
>
> works fine,
>
>  partialTriggers="multiSelect #{multiAdd} multiRemove #{multiUpdate}"
>
> does not work (having set multiAdd="multiAdd" in the component including
> the current one.
> In coerceToType call, I see obj="multiSelect multiAdd multiRemove
> multiUpdate", and type=java.lang.String[].
> While it would be easy to patch ELSupport to split the incoming string
> so that matching succeeds - I wonder if I'm doing anything else wrong.
>
>  why not doing this:
> partialTriggers="#{stringArrayThatContainsAllMyTriggers}" instead of
> "multi el" ?
>
> -M
>
>
>
>  -- Renzo
>
>
>
>
>
>
>
>



-- 
Matthias Wessendorf

further stuff:
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
mail: matzew-at-apache-dot-org

Re: [Trinidad] using multiple triggers

Posted by Matthias Wessendorf <ma...@apache.org>.
Hi

On Jan 28, 2008 12:54 PM, Renzo Tomaselli <re...@tecnotp.it> wrote:
> Hi, while using multiple triggers where a few names are achieved from
> EL, I get an exception from ELSupport.coerceToType(obj, type).
> E.g. while:
>
>     partialTriggers="multiSelect multiAdd multiRemove multiUpdate"
>
> works fine,
>
>     partialTriggers="multiSelect #{multiAdd} multiRemove #{multiUpdate}"
>
> does not work (having set multiAdd="multiAdd" in the component including
> the current one.
> In coerceToType call, I see obj="multiSelect multiAdd multiRemove
> multiUpdate", and type=java.lang.String[].
> While it would be easy to patch ELSupport to split the incoming string
> so that matching succeeds - I wonder if I'm doing anything else wrong.

why not doing this:
partialTriggers="#{stringArrayThatContainsAllMyTriggers}" instead of
"multi el" ?

-M

>
> -- Renzo
>
>
>



-- 
Matthias Wessendorf

further stuff:
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
mail: matzew-at-apache-dot-org