Pessoal estou com um problema no entendimento do ajax, neste pequeno exemplo abaixo, na tela principal tem apenas um botão escrito carregar que ao ser pressionado chama uma funcão via ajax para carregar uma lista de jogadores em um dataTable que inicialmente esta vazio, apos executar a funcão o dataTable é preenchido com os respectivos jogadores, aparece o nome do jogador e um botão “ver” que no exemplo só imprime o nome do jogador… o problema esta ai, porq este botao nao funciona??? Fiz 2 testes, o primeiro eu carrego o datatable sem o botao carregar, ou seja ao iniciar a tela os jogadores ja vem listados no datatable, para este caso o botao “ver” funciona, no segundo é o que eu falei assima, tem um botao carregar q ao ser pressionado carrega a lista de jogadores, porem neste caso o botao “ver” não faz nada!!!
no meu pouco conhecimento acredito q tenha alguma coisa a ver com com DOM, porem nao sei o q pode ser!!
Alguém pode me ajudar por favor???
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:commandButton value="carregar">
<f:ajax event="click" render="atualiza" listener="#{testeMB.update}" />
</h:commandButton>
<h:dataTable id="atualiza" value="#{testeMB.lista}" var="j">
<h:column>
<h:outputText value="#{j.nome}" />
<h:commandButton value="Ver">
<f:ajax event="click" listener="#{testeMB.ver(j)}"/>
</h:commandButton>
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
/**
*
* @author Sergio
*/
@ManagedBean
@RequestScoped
public class TesteMB {
private List<Jogador> jogadores = new ArrayList<Jogador>();
private List<Jogador> lista = new ArrayList<Jogador>();
/** Creates a new instance of TesteMB */
public TesteMB() {
Jogador j = new Jogador();
j.setNome("Sergio");
jogadores.add(j);
j = new Jogador();
j.setNome("Wagner");
jogadores.add(j);
j = new Jogador();
j.setNome("Tiago");
jogadores.add(j);
}
public void ver(Jogador jogador) {
System.out.println(jogador.getNome());
}
public void update() {
lista = getJogadores();
}
/**
* @return the jogadores
*/
public List<Jogador> getJogadores() {
return jogadores;
}
/**
* @param jogadores the jogadores to set
*/
public void setJogadores(List<Jogador> jogadores) {
this.jogadores = jogadores;
}
/**
* @return the lista
*/
public List<Jogador> getLista() {
return lista;
}
}