myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephen Connolly <stephen.alan.conno...@gmail.com>
Subject Re: [Trinidad] Regarding PartialTriggers attribute
Date Tue, 13 Apr 2010 08:27:01 GMT
On 12 February 2010 14:54, preeti agarwal <preetiagarwal99@gmail.com> wrote:

> Hi
>       For our Application we wanted to raise partialTriggers based on
> three components. Accidentally till now we were using commas to separate
> them and it worked fine.
>
> <tr:panelGroupLayout id="panelGroup#{count}"
> partialTriggers="link#{count},h_anchors#{count},expandAll">
>
> We use :
> Trinidad                        1.2.12
> jsf-facelets                    1.1.14
> JBoss                           4.2.1
>
>
>
> Now when we tried to run this in other environment (other than JBoss),
> it gives error saying
>
> java.lang.IllegalArgumentException: Cannot convert selectedReaction of
> type class java.lang.String to class [Ljava.lang.String;
>
>
> When we searched in Trinidad Doc it recommends to use spaces instead of
> commas. Then we found in
> http://issues.apache.org/jira/browse/TRINIDAD-1417 that we need to use
> EL expressions as even spaces don't work.
>
> Now some FAQs regarding this:
>
> 1)      Why commas were working in JBoss environment since it's not
> supported as per the document? Does any jar allowed it?
>
> 2)      If it was working in JBoss then why it failed in the new
> environment?
>

It seems that JBoss and/or Seam uses it's own EL support classes... these
will fall back to the PropertyEditor's if all else fails.
It would appear that either in your JBoss server a StringArrayPropertyEditor
has been registered, or else JBoss registers such
a property editor by default (perhaps for the JMX console)

The new environment does not have such a property editor registered.

[Preeti: Before you go running back and emailing me to say that somebody on
the trinidad list found a solution, check who's sending this mail ;-) ]

The hack is to register a StringArrayPropertyEditor in the container.  This
does not fix the original issue.  The original issue is best fixed by using
an EL function to convert the string to a string array, as not every
container is as ameanable to registering custom PropertyEditor's on start-up
as Jetty.

BTW.  Registering a custom property editor in a Servlet Context Listener is
a potential ClassLoader leak as PropertyEditorManager is in the global
classloader and would contain a reference to the class from the deployed
application.  Additionally, as PropertyEditorManager is in the global
classloader, the hack has the potential to break any other applications
deployed to the container / break the container.  That is why using an EL
function is the correct and only solution.


> 3)      Is there any fix regarding spaces issue?
>
>
>
>
> Thanks and Regards,
>
> Preeti Agarwal
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message