Pesquisa BD com Hibernate + ZK view

Hello people!

Tenho um formulario em ZK para pesquisar livros. um dos campos do formulario e Titutlo (pesquisa por titulo), identificado pelo id=txtTitulo. Eu gostaria que ao escrever “Java 7” (e titulo de um livro que existe na minha base de dados) ele me mostrasse os atributos do objecto todo,isto e, todos os livros com esse titulo.

Para tal, tenho uma classe “PesquisarLivroController” onde implemento os eventos dos butoes desse formulario.
A minha classe Livro tem um atributo titulo. Entao, livro.getTitulo().equals(txtTitulo) deve mostrar esse livro.

Aqui esta o meu controller do formulario em causa

[code]public class PesquisaLivroController extends GenericForwardComposer {

private static final long serialVersionUID = 1L;

private Textbox txtTitulo;
private Textbox txtAutor;
private Textbox txtISBN;
private Textbox txtAreaAplicacao;
private Textbox txtDescricao;
private Listbox lbxLista;
private Window window;

public void onClick$btnPesquisar(Event event) {
	try {
		pesquisarLivro();
		// limpar();
	} catch (SQLException e) {

		e.printStackTrace();
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

private void pesquisarLivro() throws SQLException, InterruptedException {

			
	LivroDAO livroDAO = new LivroDAO();
	ArrayList<Livro> livros = (ArrayList<Livro>) livroDAO.findAll();
	Livro livro = new Livro();

	if (livros.contains(livro.getTitulo().equalsIgnoreCase(txtTitulo.getText()))) {
		
		JOptionPane.showMessageDialog(null, txtTitulo.getText() + "Existe no Stock");
		listar();
	}

	Messagebox.show("Operacao efectuada com Sucesso");

}

private void listar() throws SQLException {

	Listhead listhead = lbxLista.getListhead();
	lbxLista.getItems().clear();
	lbxLista.appendChild(listhead);

	LivroDAO livroDAO = new LivroDAO();

	ArrayList<Livro> Livros = (ArrayList<Livro>) livroDAO.findAll();

	for (Livro livro : Livros) {

		Listitem item = new Listitem();
		Listcell titulo = new Listcell(livro.getTitulo());
		Listcell autor = new Listcell(livro.getAutor());
		Listcell isbn = new Listcell(livro.getIsbn());
		Listcell preco = new Listcell(livro.getPreco() + "");
		Listcell ano = new Listcell(livro.getAno() + "");
		Listcell descricao = new Listcell(livro.getDescricao());
		Listcell cidade = new Listcell(livro.getCidade());
		Listcell catgoria = new Listcell(livro.getCategoria());

		item.appendChild(titulo);
		item.appendChild(autor);
		item.appendChild(isbn);

		item.setValue(livro);
		lbxLista.appendChild(item);

	}

}

}
[/code]

Aqui vai o formulario

[code]<?page title="Pesquisa de Livro" contentType="text/html;charset=UTF-8"?>





ISBN






Titulo







Area de Aplicaco






Descricao






Autor




















		</listhead>
	</listbox>
	<div height="10px" />
	<hbox>
		<button id="btnPesquisar" label="Pesquisar" onClick="" />
		<button id="btnEditar" label="Editar" onClick="" />
		<button label="Cancelar" onClick="" />
		<button id="btnVender" label="Vender" onClick="" />
		<div width="140px" />
		<button id="btnFechar" label="Fechar" onClick="" />
	</hbox>
</window>

[/code]

Thank you!

E qual sua dúvida ou problema?

vc tem que linkar a parte visual com se controller isso pode ser feito com o objeto AnnotateDataBinder do zk, se me permite vou mudar um puco teu exemplo,invés de usar um controler vou usar teu controller como uma window do zk

public class PesquisaLivroController extends Window {  
  
    private static final long serialVersionUID = 1L;  
  
 private Livro livro;

private ArrayList livros;
//nçao esquecer gets and sets de livro e livros

private AnnotatedDataBinder binder;

private String filtrotitulo;

//criar gets e sets para filtrotitulo

    private Window window;  

public void onCreate(){

livro = new Livro();
livros = new ArrayList();

window =(Window)getFellow(“win”);//id da janela da parte visual
binder = new AnnotatedDataBinder(win);
binder.loadAll();

}

    public void btnPesquisar() throws SQLException, InterruptedException {  


         LivroDAO livroDAO = new LivroDAO();  
      livros = (ArrayList<Livro>) livroDAO.findByTitulo(filtroTitulo);  //cria uma query pra trazer por titulo,bem mais simples
     binder.loadAll();//recarrega todos os elementos visuais da tela
 
       
    }  
  
   
  
}

na parte visual tu indica o controlador





ISBN






Titulo







Area de Aplicaco






Descricao






Autor












        </listhead>  
    </listbox>  
    <div height="10px" />  
    <hbox>  
         <textbox value="@{win.filtrotitulo}"/>
        <button id="btnPesquisar" label="Pesquisar" onClick="win.btnPesquisar()" />  
        
    </hbox>  
</window>  

pronto agora tes atributos definidos no controlador estão ligados com a view ,o código sozinho se explica mas se tu tiver duvidas diz aew