Dúvida com escopo do Spring
11/06/2010
0
No MB, estou usando o escopo do Spring como session:
@Controller("Controller")
@Scope("session")
só q ouvi vários relatos sobre esse tipo de escopo, e que o melhor era se fosse request, pois bem, mudei pra request, só q minha aplicação não funcionou mais direito;
Tenho uma tela de consulta, onde quando o usuário clica numa linha do datatable ele é jogado para o form com os dados, mas, só funciona com o @Scope("session") se colocar request, quando clico não acontece nada nem dá erro, é como se ficasse congelado, não importa se no faces-config.xml está session ou request, então a pergunta:
1º o escopo session do Spring, tem a mesma finalidade do escopo session do jsf, guardando tudo na sessão, inclusive a arvore de componentes, ou simplesmente guarda as dependências necessárias para que possa injetar quando preciso? se sim, tem algum problema se deixar o escopo session no spring, já q posso colocar o escopo request no faces-config e a aplicação funciona?
2º se o escopo session do Spring pesa, o que fazer para minha aplicação funcionar quando colocar request?
Obrigado.
José Filho
Posts
11/06/2010
Dyego Carmo
Voce não consegue aproveitar os dados entre requisicoes ...
Normalmente para nao pesar , voce usa o escopo de CONVERSACAO , ele tem o melhor dos dois mundos,
18/06/2010
Dyego Carmo
Voce pode demarcar a "sessao"... no metodo que inicia o procedimento voce "inicia" a conversa... no metodo que finaliza ela , voce "finaliza" a conversa...
Entende ?
----------------------------------------------------------------
Dúvidas em Programação ? - http://www.forHelp.US
Controverso Eu ? - http://www.go-java.com
19/06/2010
José Filho
Vendo algumas matérias sobre o problema, vi q existem 3 possibilidades:
O uso do keepalive;
O uso do saveState;
e o uso do escopo de conversação;
Resolvi 1º tentar o keepalive, pois é o se aconselha quando já se usa o richfaces; no MB coloquei @keepalive(ajaxonly=true), ai então ele começou a mostrar mensagens de NoSerializableException, então implementei serializable no MB e no DaoGenericoImp, funcionou, mas a alegria de pobre dura pouco, os botões dentro do datatable estão funcionando, só q hj verifiquei um efeito colateral, não consigo mais salvar um registro, ele faz tudo como se estivesse salvando, não dá erro de nada, mas o registro não vai pra tabela, e agora? Alguma sugestão?
Estou querendo esgotar as possibilidade com o keepalive antes de tentar outra opção.
Obrigado
21/06/2010
José Filho
javax.servlet.ServletException: #{fiscalController.adicionar}: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.org.creapi.entities.Fiscal
o método adicionar:
public String adicionar() { fiscalDao.salvar(this.fiscal); this.prepareDetalhar(); return FORMULARIO; }
o método salvar:
@Transactional(readOnly=false,propagation=Propagation.REQUIRED) public T salvar(T object) { getEntityManager().clear(); getEntityManager().persist(object); return object; }
tb já andei pesquisando algo sobre o erro acima, vi um artigo do Paulo Silveira q fala sobre esse erro no blog da Caelum, tentando resolver o problema de acordo com o q foi repassado pelo Paulo, retirei o @GeneretadValue e passei a atribuir manualmente os códigos, o erro não aparece, mas tb, os dados não são gravados.
Obrigado
Clique aqui para fazer login e interagir na Comunidade :)