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.
Experimente implementar Serializable no seu managedbean:
@SuppressWarnings("serial")
@ViewScoped
@ManagedBean(name="meuMB")
public class MeuManagedBean implements Serializable
...
[quote=jokacwb]Experimente implementar Serializable no seu managedbean:
@SuppressWarnings("serial")
@ViewScoped
@ManagedBean(name="meuMB")
public class MeuManagedBean implements Serializable
...
[/quote]
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.
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”
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.
[quote=jokacwb]Experimente implementar Serializable no seu managedbean:
@SuppressWarnings("serial")
@ViewScoped
@ManagedBean(name="meuMB")
public class MeuManagedBean implements Serializable
...
[/quote]
Quando que meus MBs devem implementar o Serializable?
Grato
Ademir
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.
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 ?
[quote=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 ?[/quote]
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í?
up, pois ainda não resolvi o problema.