Boas pessoal,
Tenho o meu bean com @Scope(ScopeType.SESSION) e funciona tudo bem. Quando mudo para @Scope(ScopeType.PAGE) ele dá-me um erro num objecto. Agradecia ajuda por precisa que o escopo fosse PAGE.
Erro:
14/Mar/2013 16:12:48 com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/manterCodigosPostais.xhtml]
java.io.NotSerializableException: org.ptsi.sigraweb.polaris.entity.Paridade
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.ArrayList.writeObject(ArrayList.java:570)
at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.HashMap.writeObject(HashMap.java:1001)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:281)
at javax.faces.render.ResponseStateManager.writeState(ResponseStateManager.java:166)
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:296)
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:258)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:620)
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:110)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.utils.FastSwapFilter.doFilter(FastSwapFilter.java:66)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
Bean:
[code]
@Name(“codigoPostalBean”)
@Scope(ScopeType.PAGE)
public class CodigoPostalBean {
private CodigoPostal filtro = new CodigoPostal();
private boolean pesquisaLocalidade;
private boolean pesquisaArruamento;
private CodigoPostal codPostalSelecionado;
private CodigoPostal novoCodPostal = new CodigoPostal();
private Localidade localidadeSelecionada;
private Arruamento arruamentoSelecionado;
private Arruamento novoArrCodigo = new Arruamento();
private boolean mostraRemover = false;
private boolean mostraDetalhesLoc = false;
private boolean mostraDetalhesArr = false;
private boolean mostraCriar = false;
private boolean editarCod = false;
private boolean mostraAssociar = false;
@Out(required=false)
private ArrayList<Indicador> listaIndicadores = InterfacesListagens.listarIndicadores();
@Out(required=false)
private ArrayList<Paridade> listaParidades = InterfacesListagens.listarParidades();
@Out(required=false)
private ArrayList<Localidade> listaLocalidadesDisponiveis = new ArrayList<Localidade>();
public Arruamento getNovoArrCodigo() {
return novoArrCodigo;
}
public void setNovoArrCodigo(Arruamento novoArrCodigo) {
this.novoArrCodigo = novoArrCodigo;
}
public boolean isPesquisaArruamento() {
return pesquisaArruamento;
}
public void setPesquisaArruamento(boolean pesquisaArruamento) {
this.pesquisaArruamento = pesquisaArruamento;
}
public boolean isMostraAssociar() {
return mostraAssociar;
}
public void setMostraAssociar(boolean mostraAssociar) {
this.mostraAssociar = mostraAssociar;
}
public boolean isMostraCriar() {
return mostraCriar;
}
public void setMostraCriar(boolean mostraCriar) {
this.mostraCriar = mostraCriar;
}
public boolean isPesquisaLocalidade() {
return pesquisaLocalidade;
}
public void setPesquisaLocalidade(boolean pesquisaLocalidade) {
this.pesquisaLocalidade = pesquisaLocalidade;
}
public CodigoPostal getNovoCodPostal() {
return novoCodPostal;
}
public void setNovoCodPostal(CodigoPostal novoCodPostal) {
this.novoCodPostal = novoCodPostal;
}
public boolean isMostraRemover() {
return mostraRemover;
}
public void setMostraRemover(boolean mostraRemover) {
this.mostraRemover = mostraRemover;
}
public CodigoPostal getCodPostalSelecionado() {
return codPostalSelecionado;
}
public void setCodPostalSelecionado(CodigoPostal codPostalSelecionado) {
this.codPostalSelecionado = codPostalSelecionado;
}
public boolean isEditarCod() {
return editarCod;
}
public void setEditarCod(boolean editarCod) {
this.editarCod = editarCod;
}
public boolean isMostraDetalhesLoc() {
return mostraDetalhesLoc;
}
public void setMostraDetalhesLoc(boolean mostraDetalhesLoc) {
this.mostraDetalhesLoc = mostraDetalhesLoc;
}
public boolean isMostraDetalhesArr() {
return mostraDetalhesArr;
}
public void setMostraDetalhesArr(boolean mostraDetalhesArr) {
this.mostraDetalhesArr = mostraDetalhesArr;
}
public Arruamento getArruamentoSelecionado() {
return arruamentoSelecionado;
}
public void setArruamentoSelecionado(Arruamento arruamentoSelecionado) {
this.arruamentoSelecionado = arruamentoSelecionado;
}
public Localidade getLocalidadeSelecionada() {
return localidadeSelecionada;
}
public void setLocalidadeSelecionada(Localidade localidadeSelecionada) {
this.localidadeSelecionada = localidadeSelecionada;
}
public CodigoPostal getFiltro() {
return filtro;
}
public void setFiltro(CodigoPostal filtro) {
this.filtro = filtro;
}
@DataModelSelection
@Out(required=false)
private CodigoPostal cod;
@DataModel
private List<CodigoPostal> listaCodigos;
public List<CodigoPostal> getListaCodigos() {
return listaCodigos;
}
public void select() {
InterfacesListagens.verDetalhesCodPostal(cod);
InterfacesListagens.verLocalidadesAssociadasCodPostal(cod);
InterfacesListagens.verArruamentosAssociadosCodPostal(cod);
cod.setReadOnly(true);
}
public String getPainel() {
return "panelCodPostais";
}
public void pesquisar() {
editarCod=false;
mostraRemover=false;
mostraAssociar=false;
listaCodigos = InterfacesListagens.listarCodigosPostais(filtro);
if(listaCodigos == null)
listaCodigos = new ArrayList<CodigoPostal>();
}
public String refrescar()
{
mostraRemover = false;
codPostalSelecionado = null;
mostraAssociar=false;
pesquisar();
return "/manterCodigosPostais.xhtml";
}
public void selecionaLocalidade(Localidade l) {
mostraDetalhesLoc=true;
localidadeSelecionada=l;
InterfacesListagens.verDetalhesLocalidadesAssociadasCodPostal(cod, localidadeSelecionada);
}
public void selecionaArruamento(Arruamento arr) {
mostraDetalhesArr=true;
arruamentoSelecionado=arr;
InterfacesListagens.verDetalhesArruamentosAssociadosCodPostal(cod, arruamentoSelecionado);
}
public void fechaJanelaDetArr() {
mostraDetalhesArr=false;
}
public void fechaJanelaDetLoc() {
mostraDetalhesLoc=false;
}
public void editarCodigo() {
editarCod=true;
}
public void gravarCodigo() {
for (CodigoPostal codigo : listaCodigos) {
InterfacesListagens.editarCodPostal(codigo);
}
editarCod=false;
}
public void selecionaCodPostal(CodigoPostal codigoPostal) {
InterfacesListagens.verLocalidadesAssociadasCodPostal(codigoPostal);
InterfacesListagens.verArruamentosAssociadosCodPostal(codigoPostal);
if (editarCod == false) {
codPostalSelecionado = codigoPostal;
mostraRemover = true;
}
mostraAssociar=false;
}
public void removerCodigo() {
InterfacesListagens.removerCodPostal(codPostalSelecionado);
pesquisar();
mostraRemover=false;
}
public void criarCodigo() {
InterfacesListagens.criarCodigoPostal(novoCodPostal);
InterfacesListagens.associarLocalidadeArruamento_x_CodigoPostal(novoCodPostal, "criar");
mostraCriar=false;
filtro = new CodigoPostal();
filtro.setCod1(novoCodPostal.getCod1());
filtro.setCod2(novoCodPostal.getCod2());
filtro.setDesignacao(novoCodPostal.getDesignacao());
pesquisar();
}
public void abrePesquisaLocalidade() {
if(pesquisaLocalidade==true) {
pesquisaLocalidade=false;
}
else {
pesquisaLocalidade=true;
}
}
public void abrePesquisaArruamento() {
if(pesquisaArruamento==true) {
pesquisaArruamento=false;
}
else {
pesquisaArruamento=true;
}
}
/** Adiciona localidade as associadas, no Criar cod postal ou no manter */
public void selecionaLocalidadePesquisa(Localidade l) {
if(mostraCriar==true) {
if(!novoCodPostal.getLocalidades_associadas().contains(l)) {
novoCodPostal.getLocalidades_associadas().add(l);
}
}
else {
boolean temNaLista = false; // Verifica se a localidade ja se encontra na lista
for(Localidade loc : codPostalSelecionado.getLocalidades_associadas()) {
if(loc.getCodigo().equals(l.getCodigo())) {
temNaLista=true;
}
}
if(temNaLista==false) {
codPostalSelecionado.getLocalidades_associadas().add(l);
}
}
}
/** Remove localidade associada no caso de estarmos a criar um codigo postal */
public void removerLocAss(Localidade l) {
novoCodPostal.getLocalidades_associadas().remove(l);
}
/** Remove localidade associada no caso de estarmos a alterar um codigo postal ja existente */
public void removerLocAssCodExist(Localidade l) {
codPostalSelecionado.getLocalidades_associadas().remove(l);
}
/** Mostra ou fecha o panel de criar codigo postal */
public void mostraCriarCodPostal() {
novoCodPostal = new CodigoPostal();
if(mostraCriar==true) {
mostraCriar=false;
}
else {
mostraCriar=true;
}
}
public void mostraAssociarLocArrCod() {
if(mostraAssociar==true) {
mostraAssociar=false;
}
else {
listaLocalidadesDisponiveis = codPostalSelecionado.getLocalidades_associadas();
for (Localidade l : listaLocalidadesDisponiveis) {
if(l.getCodigo().substring(4, 11).equals("0000000")) {
l.setCodigo_abreviado(l.getCodigo().substring(0, 4));
}
else {
if(l.getCodigo().substring(6, 11).equals("00000")) {
l.setCodigo_abreviado(l.getCodigo().substring(0, 6));
}
else {
l.setCodigo_abreviado(l.getCodigo().substring(0, 11));
}
}
}
mostraAssociar=true;
}
}
public void selecionaArruamento_associacoes(Arruamento arr) {
novoArrCodigo=arr;
}
public void validaArruamento() {
ArrayList<Localidade> loc_associadas = codPostalSelecionado.getLocalidades_associadas();
boolean valido = false;
for (Localidade l : loc_associadas) {
valido = InterfacesListagens.validarArruamento_x_CodigoPostal(novoArrCodigo, codPostalSelecionado, l).equals("S");
if(valido) {
break;
}
}
System.out.println("valido: "+valido);
if(valido) {
novoArrCodigo.setIndic_cod_x_arruam_tipo_abrev(converterIndicadorDescricaoAbreviatura(novoArrCodigo.getIndic_cod_x_arruam_tipo()));
novoArrCodigo.setConcat_abrev_pri_ind_inf(novoArrCodigo.getIndic_cod_x_arruam_tipo_abrev()+" "+novoArrCodigo.getIndic_cod_x_arruam_inf());
novoArrCodigo.setConcat_abrev_pri_ind_sup(novoArrCodigo.getIndic_cod_x_arruam_tipo_abrev()+" "+novoArrCodigo.getIndic_cod_x_arruam_sup());
novoArrCodigo.setParidade_cod_x_arruam_id(converterParidadeDescricaoId(novoArrCodigo.getParidade_cod_x_arruam_descricao()));
codPostalSelecionado.getArruamentos_associados().add(novoArrCodigo);
}
pesquisaArruamento=false;
}
/** Remove arruamento associado no caso de estarmos a alterar um codigo postal ja existente */
public void removerArrAssCodExist(Arruamento arr) {
codPostalSelecionado.getArruamentos_associados().remove(arr);
}
public void gravarAssociacoesCodigo() {
// Associa novas localidades
// Associa novos arruamentos
InterfacesListagens.associarLocalidadeArruamento_x_CodigoPostal(codPostalSelecionado, "gravar");
mostraAssociar=false;
}
public String converterIndicadorDescricaoAbreviatura(String descricao) {
if(descricao.trim()!=null) {
for (Indicador i : listaIndicadores) {
if(descricao.trim().equals(i.getDescricao())) {
return i.getAbreviatura().trim();
}
}
return null;
}
else {
return null;
}
}
public int converterParidadeDescricaoId(String descricao) {
if(descricao.trim()!=null) {
for (Paridade p : listaParidades) {
if(descricao.trim().equals(p.getDescricao())) {
return p.getId();
}
}
return 0;
}
else {
return 0;
}
}
private String suggestion;
public String getSuggestion() {
return suggestion;
}
public void setSuggestion(String suggestion) {
this.suggestion = suggestion;
}
@Remove @Destroy
public void destroy()
{
}
}[/code]