Tenho problemas quando chamo uma pagina que usa um ManagedBean. Quando Subo a aplicacao o conteiner do Spring instancia meu
ManagedBean “UsuarioController”, porem quando eu chamo meu arquivo .xhtlm que usa esse ManagedBean, o JSF nao usa o ManagedBean
criado pelo Spring ao subir a apliacao, com isso o novo ManagedBean(o que o JSF instanciou) vem com os atributos todos “null” impedindo de executar
meus metodos adequadamente. Como faço pra que o JSF reconheca o ManagedBean criado pelo Spring?
Versoes: JSF 2.0, Spring 3
Segue codigo do meu ManagedBean:
@ManagedBean(name="usuarioController")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class UsuarioServiceImpl implements UsuarioService{
private PessoaRepository serviceRepository;
@Autowired
public void setCotacaoRepository(PessoaRepository acaoRepository) {
this.serviceRepository = acaoRepository;
}
mostra teus arquivos de configuração
vc configurou no faces-config.xml
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
ai declarou no arquivo do spring
<bean id="usuarioController"
class="br.com.exemplo.hibernate.cadastrousuario.usuarioController">
<property name="cadastroUsuarioService" ref="cadastroUsuarioService"></property>
</bean>
se vc declarou retire o @ManagedBean(name=“usuarioController”)
[quote=Jacomete]vc configurou no faces-config.xml
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
ai declarou no arquivo do spring
<bean id="usuarioController"
class="br.com.exemplo.hibernate.cadastrousuario.usuarioController">
<property name="cadastroUsuarioService" ref="cadastroUsuarioService"></property>
</bean>
se vc declarou retire o @ManagedBean(name=“usuarioController”)[/quote]
Obrigado pela ajuda pessoal, consegui resolver…
Pra quem se interessa a solucao foi a seguinte:
Criei a Classe UsuarioController desta forma:
@ManagedBean
public class UsuarioController {
@ManagedProperty( value = "#{usuarioService}" )
private UsuarioService usuarioService;
}
Dae como a anotação @ManagedProperty usa uma Expression Language, tive que fazer a configuracao que o Jacomete falou no arquivo faces-config.xml:
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
Depois disso foi só alegria!! LOL
Por favor, você pode mostar o conteúdo da classe: “UsuarioService” é uma classe Spring?
andredecotia, segue códigos:
public interface UsuarioService {
Object save(Object objeto) throws Exception;
}
@Service(value = "usuarioService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class UsuarioServiceImpl implements UsuarioService{
private UsuarioRepository usuarioRepository;
@Autowired
public void setUsuarioRepository(UsuarioRepository usuarioRepository) {
this.usuarioRepository = usuarioRepository;
}
public Object save(Object objeto) throws Exception {
try {
this.usuarioRepository.save(objeto);
return objeto;
} catch (Exception e) {
throw new Exception("Não foi possível salvar." + e.getCause());
}
}