JSF-Spring ou JSF + Spring

         Ola pessoal, seguinte estou a iniciar um sistema web com jsf e gostaria de integrar o spring. 

Depois de algumas pequisas vi que existe esse JSF-Spring que facilita a integracao, mas ai veio a duvida qual seria a melhor opcao: JSF-Spring ou JSF + Spring(no caso integra-los manualmente).

Alguem ja usou esse JSF-Sprinng, gostaria de algumas opiniões de vocês.

Use JSF + Spring 2.5. Integração com anotações, muito simples. Vale a pena aprender.

Olá, recentemente aprendi o Spring Annotation com JSF 1.2 usando esse livro:

http://www.lcm.com.br/index.php?Escolha=20&Livro=L00639

Achei muito bom, embora ainda não tenha feito todo o exemplo do livro. Mas já percebi que é muito mais fácil que eu imaginava.

Bons estudos.

Nunca ouvi falar desse JSF-Spring, mas achei estranho. Porque, que eu saiba, a versão mais recente do Spring, a 2.5.5, possui suporte a integração com JSF, através de uma classe “variable resolver”, que faz com que as páginas JSF possam acessar os beans Spring via expression language.

Uma outra coisa: é esquisito o exemplo do JSF-Spring, onde um managed-bean declarado num xml do Faces chama o bean declarado num xml do Spring. Mais apropriado seria declarar todos os beans pelo Spring mesmo.

Ou seja, não use esse JSF-Spring, não. Consulte o capítulo 15 do manual de referência do Spring, que lá vai te explicar como fazer a integração.

Ok pessoal valeu pelas dicas.

Só mais uma coisa, existe algum bom plugin para o Eclipse com suporte ao JSF ??

Alguem tem mais alguma coisa sugestao de um bom livro para tal integracao ??

[quote=Ricardo_Neves]Ok pessoal valeu pelas dicas.

Só mais uma coisa, existe algum bom plugin para o Eclipse com suporte ao JSF ??

Alguem tem mais alguma coisa sugestao de um bom livro para tal integracao ??

[/quote]

Bom, no livro que citei conheci o JBoss Tools para trabalhar com JSF, que é muito melhor que o atual 3.4 do Eclipse.

[quote=Leonardo3001]Nunca ouvi falar desse JSF-Spring, mas achei estranho. Porque, que eu saiba, a versão mais recente do Spring, a 2.5.5, possui suporte a integração com JSF, através de uma classe “variable resolver”, que faz com que as páginas JSF possam acessar os beans Spring via expression language.
[/quote]
Antes quando isso nao era disponibilizado diretamente pelo Spring uma das maneiras de integrar JSF com Spring era utilizar esse framework.

Até os beans do JSF declarados no XML do Spring ?

[quote=keller][quote=Leonardo3001]
Uma outra coisa: é esquisito o exemplo do JSF-Spring, onde um managed-bean declarado num xml do Faces chama o bean declarado num xml do Spring. Mais apropriado seria declarar todos os beans pelo Spring mesmo.
[/quote]
Até os beans do JSF declarados no XML do Spring ?
[/quote]

Talvez minha explicação esteja esquisita. O que eu quis dizer é que se deve declarar todos os managed beans no xml do Spring, e deixar no xml do Faces apenas as declarações de navegação e outras configurações.

Eu prefiro as anotações. XML demais é muito chato de manter e verboso demais.

Onde você leu que se deve declarar todos os managed beans no XML do Spring ?
Interessante, eu não sabia que isso era possivel. :slight_smile:

Já respondendo uma possivel futura pergunta:
Entao tenho sim meus beans no ‘faces-beans.xml’ e
minhas regras de navegacao em um ‘faces-navigation.xml’.

Teria como postar um exemplo ou links que me levem a essa documentação ?

Valeu! :thumbup:

Fiz um exemplo extremamente simples:

Meu applicationContext.xml é assim:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
	
	<bean id="userMBean" class="leonardo.UserMBean" scope="request"></bean>
</beans>

Meu faces-config.xml é assim:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">
	<application>
		<variable-resolver>org.springframework.web.jsf.SpringBeanVariableResolver</variable-resolver>
	</application>

</faces-config>

Repare, o bean está no XML do Spring, hein?

Minha classe UserMBean é bobona assim:

package leonardo;

public class UserMBean {
	
	public String getNome() {
		return "Leonardo";
	}

}

E minha página também é bobona:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<f:view>
	<h:outputText value="#{userMBean.nome}"></h:outputText>
</f:view>
</body>
</html>

Configuro tudo no Eclipse Ganymede, jogo os jars do MyFaces, do JSTL e do Spring, rodo no Tomcat e, tcha-ram!, vai aparecer “Leonardo” na tela!

Só pra complementar…

O meu “se deve” foi muito forte, você faz isso se quiser. Mas acredito que, quando o managed-bean é um bean do Spring, você ganha um framework de injeção de dependência mais robusto que aquele simples que vem com o Faces.

[quote=Leonardo3001]Só pra complementar…

O meu “se deve” foi muito forte, você faz isso se quiser. Mas acredito que, quando o managed-bean é um bean do Spring, você ganha um framework de injeção de dependência mais robusto que aquele simples que vem com o Faces.
[/quote]
Use anotações. Imagine esse exemplo multiplicado apenas por 10 e depois por …
Não dá pra ficar configurando item por item, por isso as anotações do Spring 2.5 ajudam muito.

qual é a vantagem de usar essa combinação JSF + Spring ?

[quote=Leonardo3001]Só pra complementar…

O meu “se deve” foi muito forte, você faz isso se quiser. Mas acredito que, quando o managed-bean é um bean do Spring, você ganha um framework de injeção de dependência mais robusto que aquele simples que vem com o Faces.
[/quote]

Valeu pelo exemplo show de bola, bem simples de entender. :thumbup:

Sim com certeza, a unica diferença é que meus MBeans ficavam no faces-beans.xml, mas de resto funciona igual.
Pois os MBeans utilizam os “Services” que estao declarados no XML do Spring. :slight_smile:

Mais uma vez valeu! :thumbup:

Imagine você trabalhando com Java 1.4 :wink: