hfk
Maio 9, 2011, 10:59pm
#1
Ola a todos
Pessoal gostaria de fazer umaajax em uma pequena aplicação que estou desenvolvendo para aprender jsf 2.0.
na minha aplicação eu tenho uma lista de alunos, que lista os alunos depois que o cadastro do mesmo é efetuado. Gostaria de poder criar um pagna de listagem onde eu pudesse filtrar os alunos por turma, ate aqui eu sei fazer de boa, mas o que eu queria e quando eu seleciona-se a turma os alunos fossem listados na mesmo pagina, por ajax sei que é possivel fazer isto com a tag <f:ajax>, até estive lendo alguns tutorias na net mais eles não sao muitos especificos.
Sera que alguem poderia me dar um ideia de como usar este componente :?: aceito qualquer link bom.
desde ja agradeço.
abraços…
Veja o f:setPropertyActionListener
Por exemplo: suas turmas são listadas num combo. Quando o usuário selecionar a turma, através do f:setPropertyActionListener vc seta o valor da turma no managed bean, faz a consulta utilizando esse filtro e atualiza a listagem de alunos.
hfk
Maio 11, 2011, 3:34pm
#3
Obrigado por responder finotti.
eu estava ate dando uma pesquisada, mas nao conseguir entender o, f:setPropertyActionListener.
o que eu queria era apenas renderizar a lista, veja só, por exemplo eu tenho uma lista, e que por exemplo quero fazer uma pesquisa por de alunos por nome. é bem simples, mas nao funciona vejam o codigo e me digam o que estou errando por favor, é incrivel como não se acha nenhum exemplo deste tipo na internet, será que ninguem fez isto ???
xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Sysjava Informatica</title>
</h:head>
<h:body>
<h1>Sistema Escolar Web 1.0</h1>
<h:form id="teste">
<table></table>
<h:outputText value="nome"/>
<h:inputText value="#{AlunoBean.objAluno.nome}"/><br/>
<h:commandButton id="bt_teste" action="#{AlunoBean.recuperaPorNome}" value="teste">
<f:ajax execute="@form" render="lista"/>
</h:commandButton>
<br/><br/>
<h:dataTable id="lista" var="aluno" value="#{AlunoBean.listaAluno}" border="1">
<h:column>
<f:facet name="header">
<h:outputText value=""/>
</f:facet>
<h:inputHidden value="#{aluno.id}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{aluno.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Idade"/>
</f:facet>
<h:outputText value="#{aluno.idade}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Rua"/>
</f:facet>
<h:outputText value="#{aluno.rua}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Numero"/>
</f:facet>
<h:outputText value="#{aluno.numero}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Bairro"/>
</f:facet>
<h:outputText value="#{aluno.bairro}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone"/>
</f:facet>
<h:outputText value="#{aluno.telefone}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Email"/>
</f:facet>
<h:outputText value="#{aluno.email}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Turma"/>
</f:facet>
<h:outputText value="#{aluno.turma.descricao}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Alterar"/>
</f:facet>
<h:commandButton action="#{AlunoBean.selecionaAlterar}" value="Alterar"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Excluir"/>
</f:facet>
<h:commandButton action="#{AlunoBean.excluirAluno}" value="Excluir"/>
</h:column>
</h:dataTable>
</h:form>
<h:form id="q">
<h:commandLink action="addAluno.xhtml" value="voltar"/>
</h:form>
</h:body>
</html>
manageBean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.sysjava.escolar.controller;
import java.util.ArrayList;
import br.sysjava.escolar.model.Aluno;
import br.sysjava.escolar.model.Turma;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
/**
*
* @author Admim
*/
@ManagedBean(name = "AlunoBean")
@RequestScoped
public class AlunoBean {
private Aluno objAluno;
private Turma objTurma;
private DataModel listaAluno;
/** Creates a new instance of AlunoBean */
public AlunoBean() {
objAluno = new Aluno();
objTurma = new Turma();
listaAluno = new ListDataModel();
}
public void setListaAluno(DataModel listaAluno) {
this.listaAluno = listaAluno;
}
public DataModel getListaAluno() {
listaAluno = new ListDataModel(this.objAluno.recuperaTodos());
return listaAluno;
}
public Turma getObjTurma() {
return objTurma;
}
public void setObjTurma(Turma objTurma) {
this.objTurma = objTurma;
}
public Aluno getObjAluno() {
return objAluno;
}
public void setObjAluno(Aluno objAluno) {
this.objAluno = objAluno;
}
public ArrayList<Turma> getTurmas() {
return this.objTurma.recuperaTodos();
}
public String adicionaAluno() {
objAluno.salvar();
return "listarAluno";
}
public String selecionaAlterar() {
objAluno = (Aluno) (this.listaAluno.getRowData());
return "addAluno";
}
public String alterarAluno() {
objAluno.atualizar();
return "listarAluno";
}
public String excluirAluno() {
objAluno = (Aluno) (this.listaAluno.getRowData());
objAluno.excluir();
return "listarAluno";
}
/********************** aquiiiiiiiiiiiiiiiiiiiiii *************************/
public void recuperaPorNome(){
ArrayList<Aluno> lista = objAluno.recuperaAlunosPorNome(this.objAluno.getNome());
this.listaAluno = new ListDataModel(lista);
}
}
Model
public ArrayList<Aluno> recuperaAlunosPorNome(String vPesquisa) {
AlunoDao objDao = new AlunoDao();
return objDao.recuperaAlunosPorNome(vPesquisa);
}
dao
public ArrayList<Aluno> recuperaAlunosPorNome(String vPesquisa) {
ArrayList<Aluno> objListaAluno = new ArrayList<Aluno>();
String sql = "select * from aluno where a_nome like '%"+vPesquisa+"%' ";
try {
ResultSet rs = this.executQuery(sql);
while (rs.next()) {
Aluno ObjAluno = populaAluno(rs);
objListaAluno.add(ObjAluno);
}
rs.close();
return objListaAluno;
} catch (Exception ex) {
return null;
}
}
/*** popula alunos ***/
private Aluno populaAluno(ResultSet rs) {
Aluno objAluno = new Aluno();
try {
objAluno.setId(rs.getString("a_id"));
objAluno.setNome(rs.getString("a_nome"));
objAluno.setIdade(rs.getString("a_idade"));
objAluno.setRua(rs.getString("a_rua"));
objAluno.setNumero(rs.getString("a_numero"));
objAluno.setBairro(rs.getString("a_bairro"));
objAluno.setTelefone(rs.getString("a_telefone"));
objAluno.setEmail(rs.getString("a_email"));
objAluno.getTurma().setId(rs.getString("a_t_id"));
objAluno.setTurma(new TurmaDao().recuperaPorId(objAluno.getTurma().getId()));
return objAluno;
} catch (SQLException ex) {
javax.swing.JOptionPane.showMessageDialog(null, ex.getMessage());
return null;
}
}
Agradeço a que responder.
Olá, nessa postagem eu tenho algumas formas de usar a tag f:ajax do JSF 2.0
EDIT: esqueci de falar, procure por “Terceiro componente” na postagem, e pra chamar um metodo do bean que vai fazer o filtro use a propriedade listener do f:ajax