Spring 3 + JSF2 com @ViewScoped

10 respostas
furacao123

Gostaria de tirar uma duvida sobre a anotação @ViewScoped, estou desenvolvendo uma aplicação com Spring 3 + JSF2 e na hora de criar os meus MB, me deparei com uma duvida, pesquisei na internet e achei classes que implementam o ViewScoped mas nao tive resultado, entao anotei o meu MB com @ManagedBean e @ViewScoped mas vi que esta anotacao so serve para Seam, esta informação esta correta?

segue a classe MB

@ManagedBean
@ViewScoped
public class EmpresaController implements Serializable {

    // <editor-fold defaultstate="collapsed" desc="Atributos">
    @ManagedProperty(name = "empresaService", value = "#{empresaService}")
    private EmpresaService empresaService;
    private List<Empresa> empresaList;
    private Empresa selectedEmpresa;
    //</editor-fold>

    public EmpresaController() {
    }

    // <editor-fold defaultstate="collapsed" desc="GET / SET">

    public List<Empresa> getEmpresaList() {
        return empresaList;
    }

    public void setEmpresaList(List<Empresa> empresaList) {
        this.empresaList = empresaList;
    }

    public Empresa getSelectedEmpresa() {
        return selectedEmpresa;
    }

    public void setSelectedEmpresa(Empresa selectedEmpresa) {
        System.out.println("SET EMPRESA " + selectedEmpresa);
        this.selectedEmpresa = selectedEmpresa;
    }

    public void setEmpresaService(EmpresaService empresaService) {
        this.empresaService = empresaService;
    }
    //</editor-fold>

    @PostConstruct
    public void init() {
        setEmpresaList(empresaService.getAll(0));
        setSelectedEmpresa(new Empresa());
    }

    @PreDestroy
    public void destroy() {
    }
    
}

se eu nao faço com a anotação ViewScoped os dados da empresa nao aparecem nas interfaces com primefaces, o que acontece com o Spring 3 quando utilizo essa anotação?

10 Respostas

FernandoFranzini

ViewScope é JSF sim!
Leia o capitulo de scope no JSF Core para aprender os existentes e entender pq seu GUI não esta funcionando…
Na verdade é programação errada.

furacao123

Entao na integração com Spring posso utilizar o ViewScoped do JSF2?

furacao123

No meu caso que estou utilizando ajax para renderizar os componentes o viewScoped seria mais recomendado?

FernandoFranzini

Sim…

FernandoFranzini

O escopo do ciclo de vida de um MB não tem relação nenhuma com qual filosofia de comunicação HTTP. Tudo depende de oq vc quer fazer…

Flavio_Almeida

Cagatay Civici do primefaces portou viewscope para o Spring. Dê uma olhada.

http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/

furacao123

Flavio Almeida se eu utilizar o @ViewScoped do JSF2 nao vai funcionar como o view implementado pelo Spring 3?

Flavio_Almeida

Até onde eu sei @ViewScoped é um escopo do JSF, logo, seu bean será gerenciado pelo contêiner JSF. Se você quiser que ele seja gerenciado pelo Spring, você terá que usar um escopo do Spring. Como não há ViewScope no Spring, Catagay se encarregou de portá-lo para este contêiner.

Isso se torna um problem apenas se você quiser utilizar algum recurso do Spring sobre este bean que, para funcionar, precisa ser gerenciado pelo Spring (contêiner).

Vejo que você não esta fazendo nenhum uso especial, então, @ViewScoped do JSF não é um problema para você.

Abraço

furacao123

Entao por exemplo o velho problema de LazyException, implementando o view do Spring resolveria o meu problema com a sessao?

furacao123

com esta view do spring nao consigo injetar o meu service

esta view do spring tem alguma restrição com JEE5?

Criado 7 de novembro de 2011
Ultima resposta 7 de nov. de 2011
Respostas 10
Participantes 3