У меня есть JSF ManagedBean, у которого есть свойство, которое должно быть установлено Spring.Тем не менее, я получаю следующую ошибку:
Caused by: javax.el.ELException: java.lang.IllegalArgumentException: Cannot convert persistence.AuthDao@2f6e6ad9 of type class $Proxy166 to class persistence.AuthDao
at com.sun.el.ExpressionFactoryImpl.coerceToType(ExpressionFactoryImpl.java:68)
at com.sun.faces.el.ELUtils.coerce(ELUtils.java:536)
at com.sun.faces.mgbean.BeanBuilder$Expression.evaluate(BeanBuilder.java:592)
at com.sun.faces.mgbean.ManagedBeanBuilder$BakedBeanProperty.set(ManagedBeanBuilder.java:606)
... 57 more
Caused by: java.lang.IllegalArgumentException: Cannot convert persistence.AuthDao@2f6e6ad9 of type class $Proxy166 to class persistence.AuthDao
at com.sun.el.lang.ELSupport.coerceToType(ELSupport.java:397)
at com.sun.el.ExpressionFactoryImpl.coerceToType(ExpressionFactoryImpl.java:66)
У меня есть ELresolver в face-config.xml.
<managed-bean>
<managed-bean-name>authController</managed-bean-name>
<managed-bean-class>controllers.AuthController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>authDao</property-name>
<value>#{authDao}</value>
</managed-property>
</managed-bean>
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
Кажется, что он может найти класс, но этот класс другого типа ($ Proxy166?, Не знаю, откуда это).
PS: Удаление ELResolver, похоже, помогает;Я думал, что явное предоставление управляемого компонента в файле Face-config.xml переопределит ELResolver.Есть ли способ их обоих сосуществовать?Точно так же, если я предоставляю и аннотацию, и конфигурацию XML для bean-компонента, какой из них предпочтителен, или есть ли способ объединить их, я предоставлю некоторые свойства в аннотации, некоторые в XML?
PPS: после добавленияинтерфейсы и меняя текущие классы для их реализации, я получаю следующую ошибку:
Ошибка при развертывании: Исключительная ситуация при загрузке приложения: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'authDao', определенным в ресурсе ServletContext [/WEB-INF/applicationContext.xml]: сбой инициализации бина;вложенное исключение - org.springframework.beans.ConversionNotSupportedException: не удалось преобразовать значение свойства типа '$ Proxy157, реализующее persistence.UserDao, org.springframework.aop.SpringProxy, org.springframework.aop.framework.Advised' в обязательный тип '.UserDaoImpl 'для свойства' userDao ';вложенным исключением является java.lang.IllegalStateException: невозможно преобразовать значение типа [$ Proxy157, реализующее persistence.UserDao, org.springframework.aop.SpringProxy, org.springframework.aop.framework.Advised], в требуемый тип [persistence.UserDaoImpl] для свойства'userDao': не найдено подходящих редакторов или стратегии конверсии.Пожалуйста, смотрите server.log для более подробной информации.