grande jakefrog valeu pela ajuda
eu e meu orientador fizemos algumas alterações no código e agora esta full;
da uma olhada:
A classe modelo:
@Entity
@Table(name = "area")
@NamedQueries({
@NamedQuery(name = "Area.findByCodigo", query = "SELECT a FROM Area a WHERE a.codigo = :codigo"),
@NamedQuery(name = "Area.findByDescricao", query = "SELECT a FROM Area a WHERE a.descricao = :descricao")})
public class Area implements Serializable {
public static final String pesquisarDescricao = "Area.findByDescricao";
@Id
@Basic(optional = false)
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "codigo")
@Column(name = "descricao")
private String descricao;
......
a classe DAO:
@Stateless
public class AreaDAO extends GenericDAO<Area> {
public AreaDAO() {
super(Area.class);
}
@PersistenceContext(name="WebApplication1PU")
private EntityManager em;
private Area area;
public List<Area> pesquisar(String descricao) {
List<Area> resultado = null;
try {
Query consulta = em.createNamedQuery(Area.pesquisarDescricao);
consulta.setParameter("descricao",descricao);
resultado = consulta.getResultList();
} catch (Exception e) {
System.out.println("não deu hehehe: " + e.getMessage());
}
return resultado;
}
}
bem o resto tu sabe como fazer
mas para quem ainda não domina:
a Facade:
package facade;
import java.util.List;
import javax.ejb.Local;
import modelo.Area;
@Local
public interface AreaFacade {
public abstract void adicionar(Area area);
public abstract void excluir(Area area);
public abstract Area alterar(Area area);
public abstract List<Area> buscarTodos();
public List<Area> pesquisarArea(String descricao);
}
e a implementação:
package facade;
import dao.AreaDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import modelo.Area;
@Stateless
public class AreaImplementsFacade implements AreaFacade{
@EJB
private AreaDAO areaDAO;
@Override
public void adicionar(Area area) {
areaDAO.salvar(area);
}
@Override
public void excluir(Area area) {
areaDAO.excluir(area);
}
@Override
public Area alterar(Area area) {
return areaDAO.alterar(area);
}
@Override
public List<Area> buscarTodos() {
return areaDAO.buscarTodos();
}
@Override
public List<Area> pesquisarArea(String descricao) {
System.out.println("descricao"+descricao);
return areaDAO.pesquisar(descricao);
}
}
o Managed Beans:
package managedBeans;
import facade.AreaFacade;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import modelo.Area;
@ManagedBean(name = "areaMB")
@RequestScoped
public class AreaMB {
@EJB
private AreaFacade areaFacade;
private static final String posicao = "Listagem";
private Area area;
private List<Area> areas;
public Area getArea() {
if (area == null) {
area = new Area();
}
return area;
}
public void setArea(Area area) {
this.area = area;
}
public List<Area> getAreas() {
return areas;
}
public void setAreas(List<Area> areas) {
this.areas = areas;
}
public String adicionar() {
try {
areaFacade.adicionar(area);
} catch (EJBException e) {
enviarInformacaodeErroUsuario("Ocorreu um erro tente novamente mais tarde");
}
enviarInformacaoUsuario("Operação realizada com sucesso: adicionar");
return posicao;
}
public String alterar() {
try {
areaFacade.alterar(area);
} catch (EJBException e) {
enviarInformacaodeErroUsuario("Ocorreu um erro tente novamente mais tarde");
}
enviarInformacaoUsuario("Operação realizada com sucesso: alteração");
return posicao;
}
public String excluir() {
try {
areaFacade.excluir(area);
} catch (EJBException e) {
enviarInformacaodeErroUsuario("Ocorreu um erro tente novamente mais tarde");
}
enviarInformacaoUsuario("Operação realizada com sucesso: exclusão");
return posicao;
}
public List<Area> buscarTodas() {
return areaFacade.buscarTodos();
}
public String pesquisar() {
try {
System.out.println("area:" + area.getDescricao());
//areas = new ArrayList<Area>();
if (areaFacade.pesquisarArea(area.getDescricao()) != null) {
areas=areaFacade.pesquisarArea(area.getDescricao());
}
} catch (Exception e) {
enviarInformacaodeErroUsuario("Ocorreu um erro tente novamente mais tarde");
return "Erro";
}
enviarInformacaoUsuario("Operação realizada com sucesso: pesquisa");
//Area pesquisarArea = areaFacade.pesquisarArea(area.getDescricao());
return "Resultado";
}
public void enviarInformacaoUsuario(String mensagem) {
FacesContext context = getContext();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, mensagem, mensagem));
}
public void enviarInformacaodeErroUsuario(String mensagem) {
FacesContext context = getContext();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, mensagem, mensagem));
}
private FacesContext getContext() {
FacesContext context = FacesContext.getCurrentInstance();
return context;
}
}
a tela JSF para pesquisar bem simples ta:
<?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">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:outputText for="descricao" value="Descrição"/><br/>
<h:inputText id="descricao" value="#{areaMB.area.descricao}" required="true"/><br/>
<h:commandLink value="pesquisar" action="#{areaMB.pesquisar()}"/>
</h:form>
</h:body>
</html>
e a tela de resultado:
<?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:dataTable value="#{areaMB.areas}" var="area">
<h:column>
<h:outputText value="#{area.descricao}"/>
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
bom fica feio por que é só para pesquisar ai é só personalizar
valeu jakefrog :D