Hi,
I do have a question relating to properties of managed beans defined in
faces-config.xml. I do face the following situation of two beans:
<managed-bean>
<managed-bean-name>jdbcDataSourceBean</managed-bean-name>
<managed-bean-class>JDBCDataSource</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>casesDAOBean</managed-bean-name>
<managed-bean-class>CasesJdbcDAO</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<!-- [1] -->
<property-name>ds</property-name>
<value>#{jdbcDataSourceBean}</value>
</managed-property>
</managed-bean>
The first bean is injected into the second one and everything works
fine, but as I wrote the code I decided to name the managed-property of
the second bean 'dataSource' since it's more descriptive.
I renamed the field in the class and the setter as well.
But when the casesDAOBean is contructed at runtime, the application
crashes with an exception 'javax.servlet.jsp.el.ELException: Attempt to
coerce a value of type "JDBCDataSource" to type "javax.sql.DataSource"'.
Somehow the property name is recognized as type, even I had to declared
it in CasesJdbcDAO anyway (JDBCDataSource dataSource; ).
Why am I not allowed to call the field like a class in the package
javax.sql?
I had a hard time to find this one, since I wouldn't think of simply
renaming the field solved the issue.
Any clues why this happens?
Thanks,
Kurt
P.S.: Yep, sorry, not really myfaces related ;)