Entendi, foi o que eu realmente tinha pensado, mas queria apenas confirmar. Então, como minha vontade é programar de uma maneira rápida e fácil, acredito que o JSF vai servir, apenas tenho que entender certinho a maneira certa de se programar.
Quero que voces me ajudem por favor no exemplo que fiz aqui.
Segue abaixo os Pacotes e Classes.
dao
-GenericoDao.java
-HibernateUtil.java
service
-UsuarioService.java
vo
-Usuario.java
E na view
Usuario.xhtml
CadUsuario.xhtml
Segue abaixo as classes.
[code]package vo;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.*;
import dao.GenericDao;
import java.util.List;
/**
- The persistent class for the usuarios database table.
-
*/
@Entity
@Table(name=“usuarios”)
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String email;
private String senha;
private String usuario;
//bi-directional many-to-one association to Dorksbuscador
@OneToMany(mappedBy="usuario")
private List<Dorksbuscador> dorksbuscadors;
//bi-directional many-to-one association to Pagina
@OneToMany(mappedBy="usuario")
private List<Pagina> paginas;
//bi-directional many-to-one association to Site
@OneToMany(mappedBy="usuario")
private List<Site> sites;
//bi-directional many-to-one association to Variavei
@OneToMany(mappedBy="usuario")
private List<Variavei> variaveis;
public Usuario() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSenha() {
return this.senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getUsuario() {
return this.usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public List<Dorksbuscador> getDorksbuscadors() {
return this.dorksbuscadors;
}
public void setDorksbuscadors(List<Dorksbuscador> dorksbuscadors) {
this.dorksbuscadors = dorksbuscadors;
}
public List<Pagina> getPaginas() {
return this.paginas;
}
public void setPaginas(List<Pagina> paginas) {
this.paginas = paginas;
}
public List<Site> getSites() {
return this.sites;
}
public void setSites(List<Site> sites) {
this.sites = sites;
}
public List<Variavei> getVariaveis() {
return this.variaveis;
}
public void setVariaveis(List<Variavei> variaveis) {
this.variaveis = variaveis;
}
}[/code]
[code]package service;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import vo.Usuario;
import dao.GenericDao;
@ManagedBean (name=“UsuarioService”)
@SessionScoped
public class UsuarioService {
Usuario usuario = new Usuario();
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public void salvarUsuario(ActionEvent actionEvent) throws Exception{
GenericDao dao = new GenericDao();
dao.saveOrUpdate(this);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("O usuário foi registrado com sucesso!"));
}
public void editarUsuario(Usuario usuario) throws Exception{
this.usuario = usuario;
FacesContext.getCurrentInstance().getExternalContext().redirect("cadUsuario.xhtml");
}
public void excluirUsuario(Usuario usuario) throws Exception{
GenericDao dao = new GenericDao();
dao.remove(usuario);
FacesContext.getCurrentInstance().getExternalContext().redirect("Usuario.xhtml");
}
public List<Usuario> getListarUsuarios(){
GenericDao dao = new GenericDao();
Usuario usuario = new Usuario();
List<Usuario> listaUsuarios = dao.findAll(usuario);
return listaUsuarios;
}
}
[/code]
[code]
<ui:composition xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns=“http://www.w3.org/1999/xhtml”>
<p:layout fullPage=“true”>
<p:layoutUnit position="west" size="250">
<ui:include src="cabecalho.xhtml"></ui:include>
</p:layoutUnit>
<p:layoutUnit position="center">
<h:panelGrid columns="2" cellpadding="10" style="width: 100%;">
<h:form id="form2" >
<p:button value="Novo" href="cadUsuario.xhtml" />
<p:dataTable var="user" value="#{UsuarioService.listarUsuarios}" rowKey="#{UsuarioService.usuario.id}" paginator="true" rows="3"
selection="#{UsuarioService.usuario.id}" filteredValue="#{UsuarioService.listarUsuarios}" id="tblUsuarios">
<p:column headerText="Usuario" footerText="Login" sortBy="#{user.usuario.usuario}" filterBy="#{user.usuario}" id="usuario">
#{user.usuario}
</p:column>
<p:column headerText="Senha" sortBy="#{user.senha}" filterBy="#{user.usuario.senha}" id="senha">
#{user.senha}
</p:column>
<p:column headerText="E-mail" sortBy="#{user.email}" filterBy="#{user.usuario.email}" id="email">
#{user.email}
</p:column>
<p:column id="editar">
<p:commandButton title="Alterar" actionListener="#{UsuarioService.editarUsuario(user)}" icon="ui-icon-pencil" />
<p:commandButton title="Excluir" actionListener="#{UsuarioService.excluirUsuario(user)}" icon="ui-icon-close" />
</p:column>
</p:dataTable>
</h:form>
</h:panelGrid>
</p:layoutUnit>
</p:layout>
</h:body>
</ui:composition>[/code]
[code]
<ui:composition xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns=“http://www.w3.org/1999/xhtml”>
</h:head>
<h:body>
<p:layout fullPage=“true”>
<p:layoutUnit position="west" size="250">
<ui:include src="cabecalho.xhtml"></ui:include>
</p:layoutUnit>
<p:layoutUnit position="center">
<h:panelGrid columns="2" cellpadding="10">
<h:form id="form" >
<p:panel id="panel" header="Cadastrar Usuário">
<p:messages id="messages" />
<h:panelGrid columns="3">
<h:outputLabel for="usuario" value="Usuário " />
<p:inputText id="usuario"
value="#{UsuarioService.usuario.usuario}" required="true" label="usuario">
</p:inputText>
<p:message for="usuario" />
<h:outputLabel for="senha" value="Senha: " />
<p:inputText id="senha"
value="#{UsuarioService.usuario.senha}" required="true" label="senha"/>
<p:message for="senha" />
<h:outputLabel for="email" value="E-mail: " />
<p:inputText id="email"
value="#{UsuarioService.usuario.email}" required="true" label="email"/>
<p:message for="email" />
</h:panelGrid>
</p:panel>
<p:commandButton value="Salvar" update="panel" id="ajax"
actionListener="#{UsuarioService.salvarUsuario}" styleClass="ui-priority-primary"/>
<p:button value="Retornar" href="Usuario.xhtml" />
</h:form>
</h:panelGrid>
</p:layoutUnit>
</p:layout>
</h:body>
</ui:composition>[/code]
Explicando de uma maneira rapidao, o arquivo Usuario.xhtml mostrara uma tabela com os botoes alterar e excluir. Quando eu clicar em alterar, as informações que estiverem na tela serão passadas pelo metodo de alterar, pelo ActionListener e a aplicação irá para a pagina CadUsuario.xhtml, mostrando as informações lá. Por isso utilizei o escopo SessionScoped.
O Usuario.java é o Bean, contendo apenas os metodos da tabela e a anotação @Table
Já o UsuarioService.java é o ManageBean, que ficará a logica de negocio da aplicação. Nesse caso, seria os metodos de inserir um novo, excluir, metodo de listar todos usuarios, outras regras que existam para os Usuarios… enfim.
Essa é a maneira correta e a que o pessoal está acostumado de fazer?