0
Take a look at the codes:
<?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">
<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
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:o="http://omnifaces.org/ui">
<ui:define name="titulo">Cadastro de Usuário</ui:define>
<ui:define name="corpo">
<h:form>
<h1>Cadastro Usuário</h1>
<f:metadata>
<o:viewParam name="usuario" value="#{cadastroUsuarioBean.usuario}"/>
<f:event listener="#{cadastroUsuarioBean.inicializar}" type="preRenderView" />
</f:metadata>
<p:messages autoUpdate="true" closable="true"/>
<p:toolbar>
<p:toolbarGroup>
<p:button value="Novo" outcome="CadastroUsuario"/>
<p:commandButton value="Salvar" id="botaoSalvar" action="#{cadastroUsuarioBean.salvar}" update="@form"/>
</p:toolbarGroup>
<p:toolbarGroup align="right">
<p:button value="pesquisa"/>
</p:toolbarGroup>
</p:toolbar>
<p:panelGrid columns="2" id="painel" style=" width: 100%; margin-top: 20px" columnClasses="rotulo, campo" >
<p:outputLabel value="Nome" for="nome"/>
<p:inputText id="nome" size="60" maxlength="80" value="#{cadastroUsuarioBean.usuario.nome}"/>
<p:outputLabel value="E-mail" for="email"/>
<p:inputText id="email" size="60" maxlength="80" value="#{cadastroUsuarioBean.usuario.email}"/>
<p:outputLabel value="Senha" for="senha"/>
<p:password id="senha" value="#{cadastroUsuarioBean.usuario.senha}"/>
<p:selectOneMenu >
<f:selectItem itemLabel="Auxiliar"/>
<f:selectItem itemLabel="Vandedor"/>
<f:selectItem itemLabel="Administradores"/>
</p:selectOneMenu>
<p:commandButton value="Adicionar grupo"/>
</p:panelGrid>
<p:dataTable value="#{pesquisaClienteBean.itens}" var="item" id="tabelaItens" style="margin-top: 20px">
<p:column headerText="Grupo" style="text-align: left">
<h:outputText value="Vendedor"/>
</p:column>
<p:column style="width: 100px; text-align: center">
<p:commandButton icon="ui-icon-trash" title="Excluir" oncomplete="PF('comfirmacaoExclusao').show();"/>
</p:column >
</p:dataTable>
<p:confirmDialog header="Exclusao Usuário" message="Tem certeza que deseja excluir Usuário"
widgetVar="comfirmacaoExclusao">
<p:button value="Não" onclick="PF('comfirmacaoExclusao').hide(); return false;"/>
<p:commandButton value="Sim" oncomplete="PF('comfirmacaoExclusao').hide();"/>
</p:confirmDialog>
</h:form>
</ui:define>
</ui:composition>
User registration.java.
@Named
@ViewScoped
public class CadastroUsuarioBean implements Serializable {
private static final long serialVersionUID = 0L;
private Usuario usuario;
private Grupo grupoSelecionado;
private List<Grupo> grupo = new ArrayList<Grupo>();
@Inject
private CadastroUsuarioService cadastroUsuarioService;
@Inject
private Grupos grupos;
public CadastroUsuarioBean() {
limpar();
}
public void inicializar() {
grupo = grupos.grupos();
grupoSelecionado = new Grupo();
}
public void limpar() {
usuario = new Usuario();
grupo = new ArrayList<Grupo>();
}
public void salvar() {
adicionarGrupo();
this.usuario = cadastroUsuarioService.salvar(this.usuario);
limpar();
FacesUtil.addInfoMessage("Usuario cadastro com sucesso!");
}
public void adicionarGrupo() {
this.usuario.getGrupos().add(grupoSelecionado);
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public List<Grupo> getGrupo() {
return grupo;
}
public Grupo getGrupoSelecionado() {
return grupoSelecionado;
}
public void setGrupoSelecionado(Grupo grupoSelecionado) {
this.grupoSelecionado = grupoSelecionado;
}
}
Cadastrousuaroservice.java
public class CadastroUsuarioService implements Serializable {
private static final long serialVersionUID = 0L;
@Inject
private Usuarios usuarios;
@Transactional
public Usuario salvar(Usuario usuario) {
Usuario usuarioExistente = usuarios.porId(usuario.getId());
if (usuarioExistente != null && !usuarioExistente.equals(usuario)) {
throw new NegocioException("Já existe um usuario informado.");
}
return usuarios.guardar(usuario);
}
}
Usuarioconverter.java
@FacesConverter(forClass = Usuario.class)
public class UsuarioConverter implements Converter {
@Inject
private Usuarios usuarios;
public UsuarioConverter() {
usuarios = CDIServiceLocator.getBean(Usuarios.class);
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Usuario retorno = null;
if (StringUtils.isNotBlank(value)) {
retorno = (Usuario) this.usuarios.filtrados(new UsuarioFilter());
}
return retorno;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
Long id = ((Usuario) value).getId();
String retorno = (id == null ? null : id.toString());
return retorno;
}
return "";
}
}
repository Usuarios.java
public class Usuarios implements Serializable {
private static final long serialVersionUID = 0L;
@Inject
private EntityManager manager;
public Usuario guardar(Usuario usuario) {
return manager.merge(usuario);
}
@Transactional
public void remover(Usuario usuario) {
try {
usuario = porId(usuario.getId());
manager.remove(usuario);
manager.flush();
} catch (PersistenceException e) {
throw new NegocioException("Usuario " + usuario.getNome() + " não pode ser excluído.");
}
}
/*public Usuario porId(Long id) {
return manager.find(Usuario.class, id);
}*/
public Usuario porId(Long id) {
try {
return manager.createQuery("from Usuario where id = :id", Usuario.class).setParameter("id", id).getSingleResult();
} catch (NoResultException e) {
return null;
}
}
public Usuario porNomeOuEmail(String nome, String email) {
try {
return manager.createQuery("from Usuario where upper(nome) = :nome and email = :email", Usuario.class)
.setParameter("nome", nome.toUpperCase())
.setParameter("email", email.toUpperCase())
.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
public Usuario porEmail(String email) {
try {
return manager.createQuery("from Usuario where upper(email) = :email", Usuario.class)
.setParameter("email", email.toUpperCase())
.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
@SuppressWarnings("unchecked")
public List<Usuario> filtrados(UsuarioFilter filtro) {
Session session = manager.unwrap(Session.class);
Criteria criteria = session.createCriteria(Usuario.class);
if (StringUtils.isNotBlank(filtro.getNome())) {
criteria.add(Restrictions.ilike("nome", filtro.getNome(), MatchMode.ANYWHERE));
}
return criteria.addOrder(Order.asc("nome")).list();
}
}
repositorio groups.java
public class Grupos implements Serializable {
private static final long serialVersionUID = 0L;
@Inject
private EntityManager manager;
public List<Grupo> grupos(){
return manager.createQuery("FROM Grupo",Grupo.class).getResultList();
}
public Grupo porId(Long id) {
return this.manager.find(Grupo.class, id);
}
public Grupo grupoPorNome(String nome)
{
try
{
return manager.createQuery("from Grupo where upper(nome) = :nome", Grupo.class)
.setParameter("nome", nome.toUpperCase())
.getSingleResult();
}
catch (NoResultException e)
{
return null;
}
}
}
Search user.java.
@Named @Viewscoped public class Pesquisa usuariosbean Implements Serializable {
private static final long serialVersionUID = 0L;
@Inject
private Usuarios usuarios;
private final UsuarioFilter filtro;
private List<Usuario> usuariosFiltrados;
private Usuario usuarioSelecionado;
public PesquisaUsuariosBean() {
filtro = new UsuarioFilter();
}
public void excluir() {
usuarios.remover(usuarioSelecionado);
usuariosFiltrados.remove(usuarioSelecionado);
FacesUtil.addInfoMessage("Usuario" + usuarioSelecionado.getId() + "excluido com sucesso");
}
public void pesquisar() {
usuariosFiltrados = usuarios.filtrados(filtro);
}
public UsuarioFilter getFiltro() {
return filtro;
}
public List<Usuario> getUsuariosFiltrados() {
return usuariosFiltrados;
}
public Usuario getUsuarioSelecionado() {
return usuarioSelecionado;
}
public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
this.usuarioSelecionado = usuarioSelecionado;
}
}
Search users.xhtml
<ui:define name="corpo">
<h:form >
<h1>Pesquisa Usuarios</h1>
<p:messages autoUpdate="true" closable="true"/>
<p:toolbar style="margin-top: 20px">
<p:toolbarGroup style="padding: 4px">
<p:commandButton value="Pesquisar" action="#{pesquisaUsuariosBean.pesquisar}"
update=" @form " />
</p:toolbarGroup>
<p:toolbarGroup align="right" style="padding: 4px">
<p:button value="Novo" outcome="/usuarios/CadastroUsuario" />
</p:toolbarGroup>
</p:toolbar>
<p:panelGrid id="painel" columns="2" style="width: 100%; margin-top: 20px" columnClasses="rotulo,campo">
<p:outputLabel value="Nome" for="nome"/>
<p:inputText id="nome" style="width: 50%" value="#{pesquisaUsuariosBean.filtro.nome}"/>
</p:panelGrid>
<p:dataTable value="#{pesquisaUsuariosBean.usuariosFiltrados}" var="usuario" id="tabelaUsuarios" style="margin-top: 20px"
emptyMessage="Nenhum Usuario Encontrado" rows="20" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom">
<p:column headerText="Nome" style="text-align: left">
<h:outputText value="#{usuario.nome}"/>
</p:column>
<p:column headerText="E-mail" style="text-align: left">
<h:outputText value="#{usuario.email}"/>
</p:column>
<p:column style="width: 100px;text-align: center">
<p:button icon="ui-icon-pencil" title="Editar" style="margin: 5px"
outcome="/usuarios/CadastroUsuario">
<f:param name="usuario" value="#{usuario.id}"/>
</p:button>
<p:commandButton icon="ui-icon-trash" title="Excluir" oncomplete="PF('confirmacaoExclusao').show()" process="@this"
update=":confirmacaoExclusaoDialog">
<f:setPropertyActionListener target="#{pesquisaUsuariosBean.usuarioSelecionado}" value="#{usuario}"/>
</p:commandButton>
</p:column >
</p:dataTable>
<p:confirmDialog header="Exclusão de produto" message="Tem certeza que deseja excluir o produto #{pesquisaUsuariosBean.usuarioSelecionado.nome} ?"
widgetVar="confirmacaoExclusao" id="confirmacaoExclusaoDialog">
<p:button value="Não" onclick="PF('confirmacaoExclusao').hide(); return false;" />
<p:commandButton value="Sim" oncomplete="PF('confirmacaoExclusao').hide();"
action="#{pesquisaUsuariosBean.excluir}" process="@this" update="@from"/>
</p:confirmDialog>
</h:form>
log appears this error too:
– Adriano
Hello, Adriano! Detail your error better. it was not clear at what point gives the error and the details of the error.
– Dherik
Hello Dherik, this problem can solve,I have another problem when editing and deleting, when pressing edit button it directs to registration screen that I am using for registration and editing, but the same is not loading data to registration screen, because when I edit to direct is to load data on the registration screen for editing, and when deleting says user can not deleted. I have tried numerous possibilities and nothing. I will post code. if you can help me thank you.
– Adriano
if you solved the problem, show the solution here to us. If you have a new question, I recommend creating a new question :).
– Dherik
Dherik I’m sorry, I made a mistake not solved yet this problem still persists in the server log shows that it is accessing database but does not appear on the screen, query id appears but does not load data, and I can not delete.
– Adriano
hello someone can help me
– Adriano