Problemas com o RichFaces

11 respostas
F

Bom dia pessoal… estou com um problema usando o richfaces, alguem poderia me ajudar?? sou novata em java… :lol:

bom, é o seguinte, eu tenho uma rich:scrollableDataTable e precisa passar o parametro da linha seleciona, já tentei de tudo: f:param, a4j:actionparam, rich:dndParam

todos funcionam fora da tabela, mas quando coloco dentro da tabela e dá erro… mas eu preciso dele dentro da tabela para passar o parametro para o meu Bean… como eu posso fazer isso?? :shock:

obrigada!!!

11 Respostas

yorgan

Você não precisa de parametro, basta no método acionado do bean utilizar isso:

seuObjeto = (SeuObjeto) suaLista.getRowData();

Assim ele vai pegar o objeto da linha selecionada.

F

oi yorgan…

seria essa lista:

ArrayList<Obejct> selectedObejct = new ArrayList<Obejct>();

não aceitou não… :frowning:

F

eu fiz assim:

criei no meu bean:
private HtmlScrollableDataTable componenteTabela = new HtmlScrollableDataTable();

e na jsp:
rich:scrollableDataTable com binding="#{bean.componenteTabela}"

mas dá esse erro: Error writing ‘componenteTabela’

:cry: :cry: alguem sabe o pq???

rsakurai

No seu bean, cria um:
private DataModel componenteTabela;

ae vc atribui para ele a lista de seus objetos
componenteTabela = new ListDataModel(listTabela);

e na tela usa o campo value mesmo do scrollableDataTable

F

bom dia pessoal…

ainda estou com problemas com o richfaces…

eu fiz assim:

private List<Object> listarTabela;
private DataModel componenteTabela;

no meu metodo eu fiz:

componenteTabela = new ListDataModel(listarTabela);

eu tenho q colocar o binding na tabela na minha jsp??? pq se eu coloco ele dá o mesmo erro de antes, senao ele simplesmente retorna null…

sera q alguem sabe como fazer??? :cry:

rsakurai

Não precisa do binding.

na sua List … troca o Object pelo tipo real do objeto que vc vai passar para a tabela.

F

Olá rsakurai eu estou fazendo assim:

na minha jsp:
<rich:scrollableDataTable height=“500px” width=“700px” id=“listaContatos” rows=“80"
value=”#{listarContatos}" var=“f” >

com um botao:
<a4j:commandButton value=“teste” alt=“Editar” actionListener="#contatoBean.selecionarTeste}" />

no meu bean:

private DataModel componenteTabela;

public void selecionarTeste(ActionEvent event) {

componenteTabela = new ListDataModel(listarContatos());

contato = (Contato) componenteTabela.getRowData();

}
public static List<Contato> listarContatos() {

Session session = HibernateUtil.currentSession();

Dao<Contato> dao = new Dao<Contato>(session, Contato.class);

return dao.list();

}

ah eu nao sei colocar os codigos para serem visualizados como codigo… sou nova por aqui… entao me desculpa tá :oops:

rsakurai

tem alguns errinhos no seu codigo:

Altere seu scrollableDataTable para:

<rich:scrollableDataTable height=“500px” width=“700px” id=“listaContatos” rows=“80” value="#{contatoBean.listarContatos}" var=“f” >

no seu botão altere para:

<a4j:commandButton value=“teste” alt=“Editar” actionListener="#{contatoBean.selecionarTeste}" />

F

:shock: nada ainda!!! :frowning:

fiz algumas mudanças… mas mesmo assim retorna null… eu quero que retorna a linha q eu selecionei da tabela… eu preciso do id do componente da linha…

agora meu codigo esta assim:

meu bean:

private Contato contato = new Contato();

//para a tabela do richfaces
private DataModel componenteTabela;	
private List &lt;Contato&gt; listaContatos;



public List&lt;Contato&gt; getListaContatos() {
	Session session = HibernateUtil.currentSession();
	Dao&lt;Contato&gt; dao = new Dao&lt;Contato&gt;(session, Contato.class);
	return dao.list();
}


public DataModel getComponenteTabela() {
	return componenteTabela;
}



public void setComponenteTabela(DataModel componenteTabela) {
	this.componenteTabela = componenteTabela;
}

    public Contato getContato() {
	return contato;
}
	

public void setListaContatos(List&lt;Contato&gt; listaContatos) {
	this.listaContatos = listaContatos;
}



public void selecionarTeste(ActionEvent event) {
	componenteTabela = new ListDataModel(this.listaContatos);
	contato = (Contato) componenteTabela.getRowData();
	System.out.println(contato); // **** AQUI É PARA O MEU TESTE E RETORNA NULL
	
}

minha pagina xhtml:

<rich:scrollableDataTable height=“500px” width=“700px” id=“listaContatos” rows=“80"
value=”#{contatoBean.listaContatos}" var=“f” >

e o botão para testar a seleção:

<a4j:commandButton value=“teste” alt=“Editar” actionListener="#{contatoBean.selecionarTeste}" />

rsakurai

precisa dar uma arrumado nos métodos do managedbean:

OBS: Coloquei alguns comentarios em maiusculo no codigo.

private Contato contato = new Contato();

private DataModel componenteTabela; //ESTE COMPONENTE QUE VC COLOCA NO VALUE DA TABLE DO XHTML
private List <Contato> listaContatos;

//CONSTRUTOR PARA INICIALIZAR OS DADOS DA TABELA.
public ContatoBean() {
  listaContatos = getListaContatos();
  componenteTabela = new ListDataModel(this.listaContatos);
}

public List<Contato> getListaContatos() {
  Session session = HibernateUtil.currentSession();
  Dao<Contato> dao = new Dao<Contato>(session, Contato.class);
  return dao.list();
}

public DataModel getComponenteTabela() {
  return componenteTabela;
}

public void setComponenteTabela(DataModel componenteTabela) {
  this.componenteTabela = componenteTabela;
}

public Contato getContato() {
  return contato;
}

public void setListaContatos(List<Contato> listaContatos) {
  this.listaContatos = listaContatos;
}

public void selecionarTeste(ActionEvent event) {
  //TIREI A LINHA QUE INICIALIZA OS DADOS DA TABELA DAQUI, E COLOQUEI NO CONSTRUTOR DO MANAGED BEAN.
  contato = (Contato) componenteTabela.getRowData();
  System.out.println(contato);
}

Agora precisa alterar seu XHTML:

Faz essas alterações para ver se funciona.

Para vc deixar seus códigos formatados, use a tag [ code ] código [ / code ]

F

oi rsakurai

agora eu acho q deu certo!!! :smiley:
muuuuito obrigada viu!!! eu estava nisso a dias… :frowning:

só falta fazer mais alguns testes… mas já consegui passar o id do jeito q vc falou mesmo…

valeu… :lol:

tchauzinho…

Criado 18 de julho de 2008
Ultima resposta 21 de jul. de 2008
Respostas 11
Participantes 3