Boa tarde,
Estou iniciando meus estudos em programação web com java server faces e estou encontrando dificuldades ao implementar uma rotina básica de consulta. Criei um projeto de testes onde utilizo o jfs, hibernate e estou tentando recuperar um parametro da tela para utilizar em uma consulta ao banco de dados e retornar o resultado nesta mesma tela em outro formulário utilizando o recurso do ajax.
Acontece que quando eu clico no botão da tela de consulta é retornado o erro abaixo:
malformedXML: Não é possivel obter a propriedade ‘removeChild’ de referência indefinida ou nula
Já pesquisei vários foruns mas não achei nada que pudesse me nortear para identificar o erro e tentar corrigi-lo. Agradeço antecipadamente aos que puderem me prestar algum auxilio pois estou batendo cabeça pra fazer isso que eu sei ser ultra rídiculo mas pra quem não tem a “manha” (que é o meu caso) não é tão simples assim.
O meu codigo está assim:
VendaDAOHibernate
package pet.venda;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import pet.produto.Produto;
public class VendaDAOHibernate implements VendaDAO {
private Session session;
public void setSession(Session session){
this.session = session;
}
@Override
public void salvar(Venda venda) {
// TODO Auto-generated method stub
this.session.save(venda);
}
@Override
public void excluir(Venda venda) {
// TODO Auto-generated method stub
this.session.delete(venda);
}
@Override
public void atualizar(Venda venda) {
// TODO Auto-generated method stub
this.session.update(venda);
}
@Override
public List<Produto> listar(Produto produto) {
Criteria criteria = this.session.createCriteria(Produto.class);
criteria.add(Restrictions.eq("produto", produto));
return criteria.list();
}
@Override
public List<Produto> buscarProduto(Produto produto) {
Criteria criteria = this.session.createCriteria(Produto.class);
criteria.add(Restrictions.eq("nome", produto));
return criteria.list();
}
}
VendaRN (regra de Negocio)
package pet.venda;
import java.util.List;
import pet.produto.Produto;
import pet.util.DAOFactory;
public class VendaRN {
private VendaDAO vendaDAO;
private Produto produto;
public VendaRN(){
this.vendaDAO = DAOFactory.cadastrarVendaDAO();
}
public void salvar(Venda venda){
if(venda.getVenda()==null|| venda.getVenda()==0){
this.vendaDAO.salvar(venda);
}else{
this.vendaDAO.atualizar(venda);
}
}
public void buscarProduto(Integer codProduto){
this.vendaDAO.buscarProduto(produto);
}
public List<Produto> buscarProduto(Produto produto){
return this.vendaDAO.buscarProduto(produto);
}
}
VendaBean
package pet.web.bean;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.hibernate.Criteria;
import org.hibernate.Session;
import pet.produto.Produto;
import pet.produto.ProdutoRN;
import pet.venda.Venda;
import pet.venda.VendaRN;
@ManagedBean(name="vendaBean")
@RequestScoped
public class VendaBean {
private Venda venda = new Venda();
public List<Produto> listaProd;
public List<Produto> consulta;
private Integer produto;
private String itemBusca;
private Produto nome;
private Session sessao;
//### -- METODOS
public void setSession(Session sessao){
this.sessao = sessao;
}
public String finalizaVenda(){
VendaRN vendaRN = new VendaRN();
ProdutoRN produtoRN;
if (venda.getVenda()==0||venda.getVenda()==null){
vendaRN.salvar(venda);
}
return "publico/sucesso";
}
public List<Produto> getListaProd() {
if(this.listaProd==null){
ProdutoRN produtoRN = new ProdutoRN();
this.listaProd = produtoRN.listar();
}
System.out.println(this.listaProd.toString());
return this.listaProd;
}
public List<Produto> consulta(){
VendaRN vendaRN = new VendaRN();
Produto produto = new Produto();
this.consulta = vendaRN.buscarProduto(nome);
return consulta;
}
public String buscarProduto(){
VendaRN vendaRN = new VendaRN();
Produto produto = new Produto();
itemBusca = produto.getNome();
vendaRN.buscarProduto(nome);
return buscarProduto();
}
// ###--- GETTERS& SETTERS
public void setListaProd(List<Produto> listaProd) {
this.listaProd = listaProd;
}
public Venda getVenda() {
return venda;
}
public void setVenda(Venda venda) {
this.venda = venda;
}
public List<Produto> getConsulta() {
return consulta;
}
public void setConsulta(List<Produto> consulta) {
this.consulta = consulta;
}
public Integer getProduto() {
return produto;
}
public void setProduto(Integer produto) {
this.produto = produto;
}
public String getItemBusca() {
return itemBusca;
}
public void setItemBusca(String itemBusca) {
this.itemBusca = itemBusca;
}
public Session getSessao() {
return sessao;
}
public void setSessao(Session sessao) {
this.sessao = sessao;
}
public Produto getNome() {
return nome;
}
public void setNome(Produto nome) {
this.nome = nome;
}
}
Página de Consulta
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Tabela de vendas</title>
</h:head>
<h:body>
<h:form id="buscarProdutos">
<h:messages/>
<h1>Item de Consulta</h1>
<hr/>
<hr/>
<h:outputLabel value="Consultar produto: " for="produto"/>
<h:inputText id="Produto" label="produto" value="#{vendaBean.produto.nome}"/>
<h:commandButton value="lista Produto" action="#{vendaBean.buscarProduto()}">
<f:ajax execute="@form" render=":buscarProdutos :listagemProdutos"/>
</h:commandButton>
<hr/>
<hr/>
</h:form>
<h:form id="listagemProdutos">
<h1>Listagem de Produtos</h1>
<h:messages/>
<h:dataTable value="#{vendaBean.consulta}" var="produto" rules="rows" cellpadding="6" rendered="#{!empty vendaBean.listaProd}">
<h:column>
<f:facet name="header">Codigo do Produto</f:facet>
#{produto.produto}
</h:column>
<h:column>
<f:facet name="header">Fabricante</f:facet>
#{produto.fabricante}
</h:column>
<h:column>
<f:facet name="header">Nome</f:facet>
#{produto.nome}
</h:column>
<h:column>
<f:facet name="header">Tipo</f:facet>
#{produto.tipo}
</h:column>
<h:column>
<f:facet name="header">Quantidade em estoque</f:facet>
#{produto.quantidade}
</h:column>
<h:column>
<f:facet name="header">Valor Unitário</f:facet>
#{produto.valor}
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
desde já agradeço pelo auxilio.