Boa noite pessoal! vou mostrar o que quero e como estou tentando fazer.
Ex.: entrei no sistema e quero ver somente o meu registro, pra que eu possa atualizar meus dados. Eu ja tenho um datatable que traz todos registros de usuarios, mas ai qualquer um pode editar o registro de outro usuario, ai nao rola
xhtml que mostra a lista de todos usuarios no meu datatable
<!-- Formulário: tabela Users -->
<h:form id="frmUsers">
<p:dataTable id="datatable" var="usuario" value="#{usuarioBean.usuarios}" emptyMessage="No users found."
paginator="true" rows="10" paginatorPosition="bottom" rowKey="#{usuario.id}" selectionMode="single"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15">
<f:facet name="header">
Search users
</f:facet>
<p:column headerText="Name" >
<h:outputText value="#{usuario.name}" />
</p:column>
<p:column headerText="Username" >
<h:outputText value="#{usuario.username}" />
</p:column>
<p:column headerText="Authority">
<h:outputText value="#{usuario.authority}" />
</p:column>
<p:column style="width:11%; text-align: center" >
<p:commandButton update=":frmUsers" oncomplete="carDialog.show()" image="icon-view" title="View"/>
<p:commandButton update=":frmEdit:pgEdit" actionListener="#{usuarioBean.prepararAtualizar(usuario.id)}"
oncomplete="dlgEdit.show()" image="icon-edit" title="Edit"/>
<p:commandButton update=":frmDelete" actionListener="#{usuarioBean.prepararAtualizar(usuario.id)}" oncomplete="dlgDelete.show()" image="icon-delete" title="Delete"/>
</p:column>
</p:dataTable>
</h:form>
<!-- Formulário: editar User -->
<h:form id="frmEdit">
<p:dialog header="Edit" widgetVar="dlgEdit" resizable="false" id="dlgEdit" modal="true">
<p:growl id="growlEdit" showDetail="true" sticky="true"/>
<h:panelGrid id="pgEdit" columns="2" cellpadding="4" style="margin:0 auto;">
<h:outputText value="Name:" />
<p:inputText value="#{usuarioBean.usuario.name}" style="width: 200px"/>
<h:outputText value="Username:" />
<h:outputText value="Authority:" />
<p:inputText value="#{usuarioBean.usuario.username}" style="width: 200px"/>
<p:selectOneMenu value="#{usuarioBean.usuario.authority}" style="width: 200px">
<f:selectItem itemLabel="-- select --" itemValue="" />
<f:selectItem itemLabel="USER" itemValue="ROLE_USER" />
<f:selectItem itemLabel="ADMIN" itemValue="ROLE_ADMIN" />
</p:selectOneMenu>
</h:panelGrid>
<p:separator/>
<p:commandButton value=" Edit" update=":frmUsers:datatable, growlEdit, dlgEdit"
actionListener="#{usuarioBean.atualizar()}" oncomplete="dlgEdit.hide()" image="icon-save"/>
<p:commandButton value=" Cancel" update=":frmUsers:datatable" oncomplete="dlgEdit.hide()" image="icon-cancel"/>
</p:dialog>
</h:form>
UsuarioBean
@ManagedBean(name="usuarioBean")
@SessionScoped
public class UsuarioBean implements Serializable {
private Usuario usuario;
private List<Usuario> usuarios;
public UsuarioBean() {
usuario = new Usuario();
SecurityContext context = SecurityContextHolder.getContext();
if (context instanceof SecurityContext){
Authentication authentication = context.getAuthentication();
if (authentication instanceof Authentication){
usuario.setUsername(((User)authentication.getPrincipal()).getUsername());
}
}
}
public Usuario getUsuario() {
//return usuario;
if (usuario == null){
usuario = new Usuario();
}
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public void prepararInserir(){
usuario = new Usuario();
}
public void prepararAtualizar(Integer id){
UsuarioDao usuarioDao = new UsuarioDaoImpl();
usuario = usuarioDao.buscarPorId(id);
}
public void inserir(){
UsuarioDao usuarioDao = new UsuarioDaoImpl();
usuarioDao.inserir(usuario);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("User successfully added."));
usuario = new Usuario();
}
public void atualizar(){
UsuarioDao usuarioDao = new UsuarioDaoImpl();
usuarioDao.atualizar(usuario);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("User successfully updated."));
usuario = new Usuario();
}
public void excluir(){
UsuarioDao usuarioDao = new UsuarioDaoImpl();
usuarioDao.excluir(usuario);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("User successfully deleted."));
usuario = new Usuario();
}
public List<Usuario> getUsuarios() {
UsuarioDao usuarioDao = new UsuarioDaoImpl();
usuarios = usuarioDao.buscarTodos();
return usuarios;
}
private List<Usuario> filteredUsuario;
public List<Usuario> getFilteredUsuario() {
return filteredUsuario;
}
public void setFilteredUsuario(List<Usuario> filteredUsuario) {
this.filteredUsuario = filteredUsuario;
}
}
se eu alterar a datatable traz o meu usuario, mas somente o username é preenchido e o resto fica em branco. Como faço pra mostrar o restante das informacoes?
h:form id="frmUsers">
<p:dataTable id="datatable" var="usuario" value="#{usuarioBean.usuario.username}" >
<f:facet name="header">
Search users
</f:facet>
<p:column headerText="Name" >
<h:outputText value="#{usuarioBean.usuario.name}" />
</p:column>
<p:column headerText="Username" >
<h:outputText value="#{usuarioBean.usuario.username}" />
</p:column>
<p:column headerText="Authority: ">
<h:outputText value="#{usuarioBean.usuario.authority}" />
</p:column>