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