JSF + SPRING

9 views
Skip to first unread message

Anderson Matos Bonavides

unread,
Feb 18, 2009, 8:23:14 AM2/18/09
to jav...@googlegroups.com
Pessoal espero que vcs possam me ajudar.

http://www.guj.com.br/posts/list/118446.java


Grato!

--
        Ánderson Matos Bonavides        
  Bacharel em Ciência da Computação  
SCJP - Sun Certified Java Programmer 5.0

Wagner Santos

unread,
Feb 18, 2009, 9:14:08 AM2/18/09
to jav...@googlegroups.com
A pergunta óbvia: dá alguma mensagem de erro?
Outra coisa, vc nao colocou a navegacao no seu faces-config.
Vc nao colocou as informacoes de configuracao do JSF no seu web.xml

Wagner Santos
MSN/Gtalk: wagner....@gmail.com
Site: http://www.geracaoelias.blog.br
meadiciona:http://meadiciona.com/wagnergsantos/


2009/2/18 Anderson Matos Bonavides <anderson....@gmail.com>

Anderson Matos Bonavides

unread,
Feb 18, 2009, 9:23:55 AM2/18/09
to jav...@googlegroups.com
Wagner, nenhuma mensagem de erro. =(

Sobre a navegação eu ainda não coloquei por que queria ver primeiro o spring funcionando com a mensagem no console através do System.out.println("sucesso");

Eu não coloquei no post a configuração do JSF por que queria resumir pra não ficar enorme. Mas ai segue minha configuração do JSF no web.xml:

    <!-- #################### CONFIGURAÇÃO DO JSF #################### -->

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


    <!-- Faces Servlet -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Faces Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>


2009/2/18 Wagner Santos <wagner....@gmail.com>

Jean Michel

unread,
Feb 18, 2009, 7:31:51 PM2/18/09
to jav...@googlegroups.com
Cara me desculpa, mas o tempo aqui ta corrido para te responder descentemente. No fim do ano passado eu tive problemas com o JSF + Spring, segue um link para a thread que foi resolvida em uma lista (RS JUG):

http://markmail.org/message/wh4z436qguip4kln#query:Spring%20Jean%20Jorge%20Michel+page:1+mid:ryha3yvlbwja52ap+state:results

Ve se te ajuda.

Flw

Anderson Matos Bonavides

unread,
Feb 19, 2009, 11:36:04 AM2/19/09
to jav...@googlegroups.com
Obrigado Jean, em partes ajudou sim. Mas ainda falta um detalhe em meu projeto que não está funcionando. De qualquer forma agradeço.

2009/2/18 Jean Michel <jeanj...@gmail.com>

Wagner Santos

unread,
Feb 19, 2009, 11:42:47 AM2/19/09
to jav...@googlegroups.com
Anderson,
Está dando algum erro? O que ainda ano está funcionando?
2009/2/19 Anderson Matos Bonavides <anderson....@gmail.com>

Anderson Matos Bonavides

unread,
Feb 19, 2009, 12:25:46 PM2/19/09
to jav...@googlegroups.com
Oi Wagner, quando declaro no xhtml as chamadas #{usuarioBean.usuario.nome} do bean, o seguinte stack trace ocorre:

javax.faces.FacesException: Could not retrieve value of component with path : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /telas/usuario/cadastrarUsuario.xhtml][Class: javax.faces.component.html.HtmlForm,Id: cad_usuario][Class: org.richfaces.component.html.HtmlPanelBar,Id: j_id37][Class: org.richfaces.component.html.HtmlPanelBarItem,Id: j_id38][Class: javax.faces.component.html.HtmlPanelGrid,Id: j_id39][Class: org.richfaces.component.html.HtmlInputText,Id: nome]}
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:331)
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(RendererUtils.java:275)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.renderInput(HtmlTextRendererBase.java:142)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:57)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:848)
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:522)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:231)
at org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:102)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:848)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:286)
at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262)
at org.richfaces.renderkit.html.PanelBarItemRenderer.doEncodeChildren(PanelBarItemRenderer.java:187)
at org.richfaces.renderkit.html.PanelBarItemRenderer.doEncodeChildren(PanelBarItemRenderer.java:182)
at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:121)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:828)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:282)
at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262)
at org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:168)
at org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:163)
at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:121)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:828)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:883)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:889)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:889)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:159)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'usuarioBean' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'usuario' while setting bean property 'usuario'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'usuario' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)
at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
at org.springframework.web.context.request.SessionScope.get(SessionScope.java:90)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880)
at org.springframework.beans.factory.access.el.SpringBeanELResolver.getValue(SpringBeanELResolver.java:55)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:58)
at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:86)
at com.sun.el.parser.AstValue.getValue(AstValue.java:127)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
at javax.faces.component.UIOutput.getValue(UIOutput.java:173)
at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:327)
... 53 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'usuario' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:387)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:971)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
... 76 more


2009/2/19 Wagner Santos <wagner....@gmail.com>

Wagner Santos

unread,
Feb 19, 2009, 1:35:55 PM2/19/09
to jav...@googlegroups.com
Você declarou no spring o seu UsuarioBean com no nome "usuario":
<bean id="usuario" class="br.com.projetobase.bean.UsuarioBean" scope="session"> 

Ou mude o id para usuarioBean, ou mude sua EL para #{usuario.usuario.nome}

Veja se resolve.

Anderson Matos Bonavides

unread,
Feb 19, 2009, 2:58:58 PM2/19/09
to jav...@googlegroups.com
Olá Wagner obrigado pela força. Fiz tudo direitinho e o problema realmente desapareceu. Ai segue como ficou minha declaração no applicationContext.xml.

    <bean id="usuario" class="br.com.projetobase.modelo.Usuario"/>
    <bean id="login" class="br.com.projetobase.modelo.Login"/>
    <bean id="endereco" class="br.com.projetobase.modelo.Endereco"/>

    <bean id="usuarioBean" class="br.com.projetobase.bean.UsuarioBean" scope="session">
        <property name="usuario" ref="usuario" />
        <property name="login" ref="login" />
        <property name="endereco" ref="endereco" />
    </bean>

Bem, a duvida que fico é que não vejo o método cadastrar do Managed Bean ser executado.

Aqui segue o meu commandButon com a chamada:
<h:commandButton action="#{usuairoBean.cadastrar}" value="Cadastrar"/>

E aqui segue o método cadastrar para confirmar o funcionamento do Spring que fica na classe UsuarioBean.java

public String cadastrar(){
   System.out.println("SUCESSO DO SPRING");
        return "Sucesso";
}

Agradeço pela força.



2009/2/19 Wagner Santos <wagner....@gmail.com>

Bruno maomeH

unread,
Feb 20, 2009, 6:20:45 AM2/20/09
to jav...@googlegroups.com
tenta colocar a assinatura do metodo.. String getCadastrar()
--
   C. SOARES - Bruno,
   C. COMPUTAÇÃO - Unifor,
   C. MAGALHÃES - Desenvolvedor.

Weksley Viana

unread,
Feb 20, 2009, 6:27:25 AM2/20/09
to jav...@googlegroups.com
Bom dia Anderson,
 
O metodo não está sendo executado porque você escreveu o nome do bean errado usuairoBean e deveria ser usuarioBean.

Weksley Viana

Anderson Matos Bonavides

unread,
Feb 25, 2009, 12:12:49 PM2/25/09
to jav...@googlegroups.com
Oi Weksley, obrigado. Realmente funcionou. Obrigado!

2009/2/20 Weksley Viana <jogado...@gmail.com>

Setembrino Lusa

unread,
Feb 28, 2009, 3:14:12 PM2/28/09
to jav...@googlegroups.com

Ola pessoal,

 

Estou com um problema, não consegui configurar e usar transação no Spring, alguém poderia me dar uma luz, aonde estou errando.

 

No application-config.xml tenho o seguinte

<bean id="dataSource"

        class="com.mchange.v2.c3p0.ComboPooledDataSource"

        destroy-method="close">

...

</bean>

<bean id="sessionFactory"

        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

        <property name="dataSource">

            <ref local="dataSource" />

        </property>

...

</bean>

 

Transação:

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory">

            <ref local="sessionFactory"/>

        </property>

    </bean>

 

    <bean id="txProxyTemplate" abstract="true"

        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

        <property name="transactionManager" ref="transactionManager"/>

        <property name="transactionAttributes">

            <props>

             <prop key="*">PROPAGATION_REQUIRED</prop>

            </props>

        </property>

    </bean>

   

Classe de Negócio genérica, todas as classes de negócio herdam desta classe:

    <bean id="baseBO" parent="txProxyTemplate">

        <property name="target">

            <bean class="br.centrum.com.sigauto.base.BO.BaseBO">

                <property name="dao" ref="baseDAO" />

            </bean>

        </property>

        <property name="transactionAttributes">

            <props>

                <prop key="delete*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>

                <prop key="save*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>

                <prop key="update*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>

                <prop key="get*">PROPAGATION_SUPPORTS, readOnly</prop>

                <prop key="list*">PROPAGATION_SUPPORTS, readOnly</prop>

            </props>

        </property>

    </bean>

 

DAO genérico, todas as classes DAO herdam desta classe:

    <bean id="baseDAO"

        class="br.centrum.com.sigauto.base.DAO.BaseDAO">

        <property name="sessionFactory">

            <ref local="sessionFactory" />

        </property>

    </bean>

 

Tenho uma Interface da seguinte forma:

public interface DAO {

Assinatura dos Métodos Save, update, etc...

}

Tenho minha classe BaseDAO da seguinte forma

public class BaseDAO extends HibernateDaoSupport implements DAO {

   

    private org.springframework.jdbc.core.JdbcTemplate jdbcTemplate = null ;

   

   

    /** Creates a new instance of BaseDAO */

    public BaseDAO() {

    }

Métodos Save, update, etc...

}

Tenho da mesma forma uma interfaceBO de negócio e uma classe concreta que a implementa. O que poderia estar errado, consigo chamar dentro do DAO 3 metodos por exemplo pra atualização de 3 tabelas, porem isso não é feito de forma transacional, se da erro no ultimo save por exemplo, ele parece que já deu commit nos comandos anteriores, mostrando o erro sem dar rollback.

 

Obrigado,

 

Setembrino lusa

Reply all
Reply to author
Forward
0 new messages