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 ;)

Reply via email to