Menu

dependency injection problem

Users
2007-05-29
2013-04-08
  • Dmitry Semenov

    Dmitry Semenov - 2007-05-29

    Hello dear community.
    I have a problem with dependency injection of JSF bean with Spring bean.
    here are my configurations files:
    faces-config.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

    <faces-config>
        <managed-bean>
            <managed-bean-name>uiBean</managed-bean-name>
            <managed-bean-class>ua.com.palma.web.ui.UiBean</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
            <managed-property>
                <property-name>timeService</property-name>
                <value>#{timeService}</value>
            </managed-property>
        </managed-bean>
    </faces-config>

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC
        "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <bean id="timeService" class="ua.com.palma.web.service.TimeServiceImpl" />
    </beans>

    web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

        <context-param>
            <param-name>javax.faces.CONFIG_FILES</param-name>
            <param-value>/WEB-INF/faces-config.xml</param-value>
        </context-param>

        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/treasury-services.xml,/WEB-INF/treasury-data.xml
            </param-value>
        </context-param>

        <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>

        <listener>
            <listener-class>
                org.springframework.web.context.request.RequestContextListener
            </listener-class>
        </listener>

        <listener>
            <listener-class>
                de.mindmatters.faces.spring.context.ContextLoaderListener
            </listener-class>
        </listener>

        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>*.jsf</url-pattern>
        </servlet-mapping>
    </web-app>

    the problem is that, when jsf UiLogin object contracts instead of spring bean timeService it tries inject String object "#{timeService}". It cannot recognize spring timeService bean.
    the stack trace
    2007-05-28 18:49:43 ApplicationDispatcher[/myTreasury] Servlet.service() for servlet jsp threw exception
    javax.faces.el.EvaluationException: de.mindmatters.faces.spring.factory.BeansEvaluationException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean' defined in ServletContext resource [/WEB-INF/faces-config.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:206)
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
        at javax.faces.component.UIOutput.getValue(UIOutput.java:147)
        at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:82)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:191)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:169)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:712)
        at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:616)
        at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:539)
        at com.sun.faces.taglib.html_basic.OutputTextTag.doEndTag(OutputTextTag.java:173)
        at org.apache.jsp.login_jsp._jspx_meth_h_outputText_0(login_jsp.java:124)
        at org.apache.jsp.login_jsp._jspx_meth_f_view_0(login_jsp.java:96)
        at org.apache.jsp.login_jsp._jspService(login_jsp.java:57)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
        at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
        at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
        at de.mindmatters.faces.lifecycle.RenderResponsePhase.executePhase(RenderResponsePhase.java:45)
        at de.mindmatters.faces.lifecycle.AbstractPhase.execute(AbstractPhase.java:37)
        at de.mindmatters.faces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:166)
        at de.mindmatters.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:226)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:595)
    Caused by: de.mindmatters.faces.spring.factory.BeansEvaluationException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean' defined in ServletContext resource [/WEB-INF/faces-config.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at de.mindmatters.faces.spring.factory.DelegatingVariableResolver.resolveVariable(DelegatingVariableResolver.java:103)
        at com.sun.faces.el.impl.NamedValue.evaluate(NamedValue.java:125)
        at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:146)
        at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:243)
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:173)
        ... 55 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean' defined in ServletContext resource [/WEB-INF/faces-config.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
        at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:289)
        at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:285)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
        at de.mindmatters.faces.spring.factory.DelegatingVariableResolver.resolveVariable(DelegatingVariableResolver.java:101)
        ... 59 more
    Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:385)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1085)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:835)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423)
        ... 64 more
    Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:227)
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:138)
        at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:380)
        ... 67 more

    2007-05-28 18:49:43 StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
    javax.faces.el.EvaluationException: de.mindmatters.faces.spring.factory.BeansEvaluationException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean' defined in ServletContext resource [/WEB-INF/faces-config.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:206)
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
        at javax.faces.component.UIOutput.getValue(UIOutput.java:147)
        at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:82)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:191)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:169)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:712)
        at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:616)
        at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:539)
        at com.sun.faces.taglib.html_basic.OutputTextTag.doEndTag(OutputTextTag.java:173)
        at org.apache.jsp.login_jsp._jspx_meth_h_outputText_0(login_jsp.java:124)
        at org.apache.jsp.login_jsp._jspx_meth_f_view_0(login_jsp.java:96)
        at org.apache.jsp.login_jsp._jspService(login_jsp.java:57)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
        at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
        at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
        at de.mindmatters.faces.lifecycle.RenderResponsePhase.executePhase(RenderResponsePhase.java:45)
        at de.mindmatters.faces.lifecycle.AbstractPhase.execute(AbstractPhase.java:37)
        at de.mindmatters.faces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:166)
        at de.mindmatters.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:226)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:595)
    Caused by: de.mindmatters.faces.spring.factory.BeansEvaluationException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean' defined in ServletContext resource [/WEB-INF/faces-config.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at de.mindmatters.faces.spring.factory.DelegatingVariableResolver.resolveVariable(DelegatingVariableResolver.java:103)
        at com.sun.faces.el.impl.NamedValue.evaluate(NamedValue.java:125)
        at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:146)
        at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:243)
        at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:173)
        ... 55 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean' defined in ServletContext resource [/WEB-INF/faces-config.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
        at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:289)
        at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:285)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
        at de.mindmatters.faces.spring.factory.DelegatingVariableResolver.resolveVariable(DelegatingVariableResolver.java:101)
        ... 59 more
    Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:385)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1085)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:835)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:423)
        ... 64 more
    Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [ua.com.palma.web.service.TimeService] for property 'timeService': no matching editors or conversion strategy found
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:227)
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:138)
        at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:380)
        ... 67 more

     
    • Andreas Kuhrwahl

      Hi,

      it's a problem ith the new Spring releases (since Version 2.03). I will release a new version asap (maybe today evening)

      Andy

       
    • Dmitry Semenov

      Dmitry Semenov - 2007-05-29

      sorry for the foolish question, but what is "asap"?
      And one more question, "maybe today evening", what is your timezone? I'm in Ukraine Odessa, TZ +2GMT :)
      Can you post me when you release new version. and where i can download it? from CVS repository?

       
      • Andreas Kuhrwahl

        Within the next 6 hours there will be a new release

         

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.