jsf 2 - primefaces datatable with checkboxes are processing selects when are marked -
i have 1 datatable multiple selection (checkboxes). every time checkboxes marked, executed select of datatable again.
xhtml:
<p:datatable id="dtusuarios" widgetvar="usuarios" value="#{configgruposusuariosmb.usuarios}" var="usuario" paginator="true" rows="10" paginatorposition="bottom" scrollable="true" scrollheight="82%" rowsperpagetemplate="5,10,15,30,50,100" paginatortemplate="{currentpagereport} {firstpagelink} {previouspagelink} {pagelinks} {nextpagelink} {lastpagelink} {rowsperpagedropdown}" emptymessage="#{i18n.datatablevazia}" lazy="true" currentpagereporttemplate="{currentpage}/{totalpages} #{i18n.paginas} - {startrecord} #{i18n.a} {endrecord} #{i18n.de} {totalrecords}" filteredvalue="#{configgruposusuariosmb.usuariofiltered}" resizablecolumns="true" rowindexvar="rowix" selection="#{configgruposusuariosmb.usuariosselecionados}" rowkey="#{usuario.id}" style="float: right; width: 99%; overflow: hidden;" > <p:ajax event="rowselectcheckbox" /> <p:ajax event="rowunselectcheckbox"/> <f:facet name="header"> <p:outputlabel value="#{i18n.usuarios}" style="float: left;" /> </f:facet> <f:facet name="header"> <p:outputpanel> <h:outputtext value="#{i18n.pesquisaglobal}:" /> <p:inputtext id="globalfilter" onkeyup="usuarios.filter()" style="width:70px" /> <p:watermark value="#{i18n.filtroglobal}" for="globalfilter" /> </p:outputpanel> </f:facet> <p:column id="cbx" selectionmode="multiple" style="width:17px" /> <p:column id="nome" headertext="#{i18n.nomecompleto}" sortby="#{usuario.nome}" style="width:35%;"> <h:outputtext value="#{usuario.nome}" /> </p:column> <p:column id="email" headertext="#{i18n.email}" sortby="#{usuario.email}" style="width:35%;"> <h:outputtext value="#{usuario.email}" /> </p:column> <p:column id="grupoatual" headertext="#{i18n.grupoatual}" sortby="#{usuario.grupousuario.descricao}" style="width:30%;"> <h:outputtext value="#{usuario.grupousuario.descricao}" /> </p:column> </p:datatable>
mb (@viewscoped):
@managedbean(name = "configgruposusuariosmb") @viewscoped public class configgruposusuariosmb { @ejb private grupousuarioservice grupousuarioservice; @ejb private usuarioservice usuarioservice; @inject private messagescontroller messages; private grupousuario grupousuarioselecionado; private list<grupousuario> gruposusuarios; private lazydatamodel<usuario> usuarios; private lazydatamodel<usuario> usuariosgrupo; private usuario usuariofiltered; private usuario usuariogrupofiltered; private list<usuario> usuariosselecionados; private list<usuario> usuariosgruposelecionados; private etipousuario tipousuarioselecionado; // buscar palavras da base de internacionalizaĆ§Ć£o resourcebundle i18n = resourcebundle.getbundle("br.com.sales.messages.msg", facescontext.getcurrentinstance().getviewroot().getlocale()); public grupousuario getgrupousuarioselecionado() { return grupousuarioselecionado; } public void setgrupousuarioselecionado(grupousuario grupousuarioselecionado) { this.grupousuarioselecionado = grupousuarioselecionado; } public list<grupousuario> getgruposusuarios() { return gruposusuarios; } public void setgruposusuarios(list<grupousuario> gruposusuarios) { this.gruposusuarios = gruposusuarios; } public lazydatamodel<usuario> getusuarios() { if (usuarios == null) { usuarios = new genericlazydatamodel<usuario>( usuarioservice.findall()); } return usuarios; } public void setusuarios(lazydatamodel<usuario> usuarios) { this.usuarios = usuarios; } public etipousuario gettipousuarioselecionado() { if (tipousuarioselecionado == null) tipousuarioselecionado = etipousuario.a; if (gruposusuarios == null || gruposusuarios.isempty()) carregarlistagrupos(tipousuarioselecionado); return tipousuarioselecionado; } public void settipousuarioselecionado(etipousuario tipousuarioselecionado) { this.tipousuarioselecionado = tipousuarioselecionado; carregarlistagrupos(tipousuarioselecionado); } public list<selectitem> gettiposusuarios() { list<selectitem> tipos = new arraylist<selectitem>(); (etipousuario tipousuario : etipousuario.getall()) { tipos.add(new selectitem(tipousuario, i18n.getstring(tipousuario .gettipo()))); } return tipos; } public void carregarlistagrupos(etipousuario tipo) { gruposusuarios = grupousuarioservice .findbytipousuario(tipousuarioselecionado); grupousuarioselecionado = getgrupousuariopadrao(); } public grupousuario getgrupousuariopadrao() { (grupousuario grupo : gruposusuarios) { if (grupo.ispadrao()) return grupo; } return new grupousuario(); } public lazydatamodel<usuario> getusuariosgrupo() { list<usuario> users = usuarioservice .findbygrupousuario((grupousuarioselecionado != null ? grupousuarioselecionado : new grupousuario())); usuariosgrupo = new genericlazydatamodel<usuario>(users); return usuariosgrupo; } public void setusuariosgrupo(lazydatamodel<usuario> usuariosgrupo) { this.usuariosgrupo = usuariosgrupo; } public usuario getusuariofiltered() { return usuariofiltered; } public void setusuariofiltered(usuario usuariofiltered) { this.usuariofiltered = usuariofiltered; } public usuario getusuariogrupofiltered() { return usuariogrupofiltered; } public void setusuariogrupofiltered(usuario usuariogrupofiltered) { this.usuariogrupofiltered = usuariogrupofiltered; } public list<usuario> getusuariosgruposelecionados() { return usuariosgruposelecionados; } public void setusuariosgruposelecionados( list<usuario> usuariosgruposelecionados) { this.usuariosgruposelecionados = usuariosgruposelecionados; } public list<usuario> getusuariosselecionados() { return usuariosselecionados; } public void setusuariosselecionados(list<usuario> usuariosselecionados) { this.usuariosselecionados = usuariosselecionados; } public void reset() { usuariosselecionados = null; usuariosgruposelecionados = null; usuarios = null; getusuarios(); usuariosgrupo = null; getusuariosgrupo(); } public void adicionarusuarios() { list<usuario> usersatuais = ((genericlazydatamodel<usuario>) usuariosgrupo) .getdatasource(); (usuario user : usuariosselecionados) { if (!user.getgrupousuario().equals(grupousuarioselecionado)) { user.setgrupousuario(grupousuarioselecionado); usersatuais.add(user); } } // teste... usuarioservice.merge(usuariosselecionados); // reset(); if (usuariosselecionados != null) usuariosselecionados.clear(); if (usuariosgruposelecionados != null) usuariosgruposelecionados.clear(); usuariosgrupo = null; usuariosgrupo = new genericlazydatamodel<usuario>(usersatuais); messages.addinfo("msgsucessoparcial"); } public void removerusuarios() { boolean error = false; (usuario user : usuariosgruposelecionados) { if (user.getgrupousuario().equals(usuariosgruposelecionados)) { error = true; continue; } else { user.setgrupousuario(getgrupousuariopadrao()); } } reset(); if (error) messages.addwarn("msgavisousuariogrupo"); messages.addinfo("msgsucessoparcial"); } public void save() { usuarioservice.merge(usuariosselecionados); messages.addinfo("msgsucesso"); } }
if remove <p:ajax event="rowselectcheckbox" />
or change <p:ajax event="rowselectcheckbox" process="@none"/>
, method "setusuariosselecionados(list usuariosselecionados)" not invoked.
i need call "setusuariosselecionados(list usuariosselecionados)" when checkbox marked.
i'm using jsf2, primefaces 3.5
sorry english (googletranslate =d)
Comments
Post a Comment