Como declarar propriedade como transient com JSF?

10 respostas
A

Pessoal estou tendo uma dificuldade aqui com umas propridades que quero setar como transient, mas parece que o JSF ignora.
A situação é a seguinte, estou usando o ViewScoped mas devido estas propriedades que não são serializavéis o JSF não está guardando, e toda vez que uso o filtro do DataTable, por exemplo, ele constroe o Bean novamente acessando seu construtor.
As propriedades são org.primefaces.component.datatable.DataTable; import org.primefaces.component.inputtext.InputText;

Estou recebendo java.io.NotSerializableException: org.primefaces.component.inputtext.InputText .

Desde de já agradeço.

10 Respostas

J

Experimente implementar Serializable no seu managedbean:

@SuppressWarnings("serial")
@ViewScoped
@ManagedBean(name="meuMB")
public class MeuManagedBean implements Serializable
...
A

jokacwb:
Experimente implementar Serializable no seu managedbean:

@SuppressWarnings("serial") @ViewScoped @ManagedBean(name="meuMB") public class MeuManagedBean implements Serializable ...

Valeu pela resposta, brother.
Bom eu já havia feito isso, a única coisa diferente no meu código é a ausência do @SuppressWarnings(“serial”) .
Isso é uma coisa que está atrapalhando bastante, pois o ViewScoped perdeu totalmente sua característica.
Se tiver mais alguma sugestão, seria muito útil.

Desde de já agradeço.

J

posta seu managedBean na integra, to desconfiado de algum outro obj q vc usa dentro do seu MB e referenciado na pagina web q pode estar precisando de um “implements Serialisable”

A

Sim, os objs problemáticos são org.primefaces.component.datatable.DataTable e o org.primefaces.component.inputtext.InputText .
Estou fazendo binding deles e setei como transient mas de nada adiantou.
Em relação ao código, eu posto ele amanhã pela manhã, pois é um projeto la do trabalho e to sem o código aqui em casa.

A

jokacwb:
Experimente implementar Serializable no seu managedbean:

@SuppressWarnings("serial") @ViewScoped @ManagedBean(name="meuMB") public class MeuManagedBean implements Serializable ...

Quando que meus MBs devem implementar o Serializable?

Grato
Ademir

A
import org.primefaces.component.datatable.DataTable;
import org.primefaces.component.inputtext.InputText;


@ManagedBean
@ViewScoped
public class NovoLoteBean implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private DAOFactory daoFactory;
    private ItensNaoPagosDAO itensNaoPagosDAO;
    private List<ItensNaoPagos> itensNaoPagos = new ArrayList<ItensNaoPagos>();
    private List<ItensNaoPagos> itensSelecionados = new ArrayList<ItensNaoPagos>();
    private ItensNaoPagos itemSelecionadoParaDetalhe;
    private List<SelectItem> datasEmissao;
    private List<SelectItem> datasVencimento;
    private List<FonteConsolidada> fontesConsolidadas;
    private transient boolean verDetalhe;
    private ItensNaoPagos itemSelecionado;
    private boolean loteAberto;
    private Lote lote;
    private List<ItensMarcados> itensExcluidos;
    private DatasExtracao dataHoraExtracao;
    private transient DataTable itensAMarcar = new DataTablePersonalizado();
    private transient InputText valorDeComponente;
}

O básico é isso aí está dando erro no DataTable e no InputText que ele tenta serializar e não consegue e acaba não serializando nada.

G

AnjoVingador,

  • o problema do ViewScope acontece só neste managedBean?
  • porque esses componentes tem que ser transient? eu utilizo o binding do p:tree e p:menu sem problemas …

podes postar o pedaço de fonte no xhtml que você está fazendo o binding ?

A

grsouza:
AnjoVingador,

  • o problema do ViewScope acontece só neste managedBean?
  • porque esses componentes tem que ser transient? eu utilizo o binding do p:tree e p:menu sem problemas …

podes postar o pedaço de fonte no xhtml que você está fazendo o binding ?


Sim somente neste managedBean.
Eles não tem que ser transient, eu apenas coloquei pois estava estourando uma exceção e me avisava justamente sobre estes componentes, que eles não podiam ser serializados.
Sendo assim acabando com o meu ViewScoped.
Qual a versão do JSF que vc está usando aí?

A

up, pois ainda não resolvi o problema.

M

Resolveu?

Criado 11 de julho de 2011
Ultima resposta 23 de jan. de 2013
Respostas 10
Participantes 5