On 11/1/06, Jeff Bischoff <[EMAIL PROTECTED]> wrote:
>> EL expressions use the same syntax for variable references that
>> _javascript_
>> expressions do.  Thus, "#{ foo.bar}" and "#{foo[bar]}" and
>> "#{foo['bar']}"
>> are all equivalent.

If they are equivalent, then why didn't his original syntax work? I've
seen the pattern you suggested used in the Tomahawk examples and
elsewhere, but I never knew why it was necessary.

Technically, my second alternative (#{foo[bar]) is only equivalent *if* there are no periods in the "bar" part of the _expression_.

The original question was about using the <f:loadBundle> tag to expose a ResourceBundle as a map, and then using expressions to look them up.  Like many people, he had used message keys with periods in them (" login.prompt").  Trying to evaluate "#{messages.login.prompt}" or "#{messages[login.prompt]}" will not work correctly, because the "." character inside is treated as an operator.  But "#{messages[' login.prompt']}" succeeds because "login.prompt" is treated as a single value instead.

Regards.

Jeff Bischoff
Kenneth L Kurz & Associates, Inc.

Craig
 

Mick Knutson wrote:
> <h:outputText value="#{messages['label.firstName']}"/>
>
> This worked great, and I don't have to change all my Resource Bundles now.
>
> Thank you so much!!!
>
>
>
> On 10/31/06, Craig McClanahan <[EMAIL PROTECTED]> wrote:
>>
>>
>>
>> On 10/31/06, Mick Knutson < [EMAIL PROTECTED]> wrote:
>> >
>> > I solved the issue, but am not happy with it.
>> > It seems that using a dot notation in the Resource Bundle is not
>> > allowed.
>>
>>
>> Hold up a sec on the changes!
>>
>> EL expressions use the same syntax for variable references that
>> _javascript_
>> expressions do.  Thus, "#{ foo.bar}" and "#{foo[bar]}" and
>> "#{foo['bar']}"
>> are all equivalent.
>>
>> This gives me the error:
>> > <h:outputText value="#{messages.label.firstName }" />:
>>
>>
>> Try this instead:
>>
>>     <h:outputText value="#{messages['label.firstName']}"/>
>>
>> Craig
>>
>> This does not:
>> > <h:outputText value="#{messages.label_firstName}" />:
>> >
>> > But I had to change my messages.properties declaration from:
>> > label.firstName=First Name
>> >
>> > to:
>> >
>> > label_firstName=First Name
>> >
>> >
>> >
>> >
>> >
>> >
>> > On 10/31/06, Mick Knutson < [EMAIL PROTECTED]> wrote:
>> > >
>> > > What is the UserBackingBeanBeanInfo ???
>> > >
>> > > All I have is a simple UserBackingBeanBean with a set/get for public
>> > > User
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > On 10/31/06, Simon Kitching < [EMAIL PROTECTED]> wrote:
>> > > >
>> > > > Well,everything does seem to be right. However the original
>> > > > exception
>> > > > does say:
>> > > >
>> > > > javax.faces.el.PropertyNotFoundException: Bean: java.lang.String ,
>> > > > property: firstName
>> > > >         at
>> > > > org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor (
>> > > > PropertyResolverImpl.java:483)
>> > > >
>> > > > which seems to imply that getUser has returned a String object.
>> > > >
>> > > > The PropertyResolverImpl code is:
>> > > >     public static PropertyDescriptor getPropertyDescriptor(
>> > > >         BeanInfo beanInfo, String propertyName)
>> > > >     {
>> > > >         PropertyDescriptor[] propDescriptors =
>> > > >             beanInfo.getPropertyDescriptors();
>> > > >
>> > > >         if (propDescriptors != null)
>> > > >         {
>> > > >             // TODO: cache this in classLoader safe way
>> > > >             for (int i = 0, len = propDescriptors.length; i < len;
>> > > > i++)
>> > > >             {
>> > > >                 if
>> > > > (propDescriptors[i].getName().equals(propertyName))
>> > > >                     return propDescriptors[i];
>> > > >             }
>> > > >         }
>> > > >
>> > > >         throw new PropertyNotFoundException("Bean: "
>> > > >             + beanInfo.getBeanDescriptor().getBeanClass().getName()
>> > > >             + ", property: " + propertyName);
>> > > >     }
>> > > >
>> > > >
>> > > > You don't happen to have a UserBackingBeanBeanInfo class around do
>> > > > you?
>> > > >
>> > > > As a wild guess, is the User class public? Maybe if it isn't, then
>> > > > something in the java introspection or JSF el code is calling
>> > > > toString
>> > > > on it to convert it to something that is accessable..
>> > > >
>> > > > I can't think what else might be causing your issue..
>> > > >
>> > > > Cheers,
>> > > >
>> > > > Simon
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > >
>> > > Thanks
>> > >
>> > > DJ MICK
>> > > http://www.djmick.com
>> > > http://www.myspace.com/mickknutson
>> > >
>> >
>> >
>> >
>> > --
>> >
>> > Thanks
>> >
>> > DJ MICK
>> > http://www.djmick.com
>> > http://www.myspace.com/mickknutson
>>
>>
>>
>
>



Reply via email to