Bom dia, gostaria da ajuda de vocês pelo seguinte caso.
Preciso fazer o seguinte: Tenho duas datatable na pagina e alguns dados vindo do banco no primeiro datatable. Quero ao selecionar algum ou vários itens dessa tabela, clicar em um botão “adicionar” ele adicionar os dados selecionado para a tabela 2. Como se fosse um “picklist”, porém não fiz com picklist pois eu não sei como fazer uma consulta rápida igual a table, e também procurei bastante e não vi nenhum exemplo que faça (Talvez é o que faltava para a picklist ficar completa, ter um “filter by” na lista).
Então segue o meu código que tentei fazer, só que ao tentar adicionar na tabela 2 os dados não carrega na tal tabela (tabela 2) e também não aparece mensagem de erro.
Código xhtml
<h:panelGrid cellpadding="3" style="width:100%">
<p:dataTable id="dataAcesso1" style="height:100px"
value="#{perfilAcessoBean.source}" var="perfilAcesso"
paginator="true" rows="10" selectionMode="multiple"
selection="#{perfilAcessoBean.selectAcesso}"
rowKey="#{perfilAcesso.descricao}">
<p:column headerText="Perfil"
filterBy="#{perfilAcesso.descricao}">
<h:outputText value="#{perfilAcesso.descricao}" />
</p:column>
</p:dataTable>
<p:spacer height="40" />
<p:commandButton image="ui-icon ui-icon-disk" value="Adicionar"
action="#{perfilAcessoBean.adicionarAcesso}"
update="dataaAcesso2" />
<p:spacer height="5" />
<p:dataTable id="dataAcesso2" style="height:100px"
value="#{perfilAcessoBean.target}" var="perfilAcesso"
paginator="true" rows="10" selectionMode="single" rowKey="">
<p:column headerText="Perfil"
filterBy="#{perfilAcesso.descricao}">
<h:outputText value="#{perfilAcesso.descricao}" />
</p:column>
</p:dataTable>
</h:panelGrid>
Código Bean JSF
@ManagedBean(name = "perfilAcessoBean")
@RequestScoped
public class PerfilAcessoBean {
private PerfilAcesso perfilAcesso = new PerfilAcesso();
private List<Perfil> listPerfil;
private List<Acesso> source;
private List<Acesso> target;
private Acesso acesso;
private Perfil perfil;
private Perfil selectPerfil;
private Acesso[] selectAcesso;
private String pesquisar;
public List<Acesso> getSource() {
AcessoRN acessoRN = new AcessoRN();
this.source = acessoRN.listAll();
return source;
}
public void setSource(List<Acesso> source) {
this.source = source;
}
public List<Acesso> getTarget() {
return target;
}
public Acesso[] getSelectAcesso() {
return selectAcesso;
}
public void setSelectAcesso(Acesso[] selectAcesso) {
this.selectAcesso = selectAcesso;
}
public void setTarget(List<Acesso> target) {
this.target = target;
}
public String getPesquisar() {
return pesquisar;
}
public void setPesquisar(String pesquisar) {
this.pesquisar = pesquisar;
}
public Perfil getSelectPerfil() {
return selectPerfil;
}
public void setSelectPerfil(Perfil selectPerfil) {
this.selectPerfil = selectPerfil;
}
public Perfil getPerfil() {
return perfil;
}
public void setPerfil(Perfil perfil) {
this.perfil = perfil;
}
public Acesso getAcesso() {
return acesso;
}
public void setAcesso(Acesso acesso) {
this.acesso = acesso;
}
public PerfilAcesso getPerfilAcesso() {
return perfilAcesso;
}
public void setPerfilAcesso(PerfilAcesso perfilAcesso) {
this.perfilAcesso = perfilAcesso;
}
public List<Perfil> getListPerfil() {
return this.listPerfil;
}
public String onFlowProcess(FlowEvent event) {
return event.getNewStep();
}
public String save() {
return "sucessoPerfilAcesso";
}
public void adicionarAcesso() {
for (int i = 0; i < getSelectAcesso().length; i++) {
System.out.println(this.source.get(i).getDescricao());
this.target.add(this.source.get(i));
}
}
public void pesquisarPerfil() {
PerfilRN perfilRN = new PerfilRN();
this.listPerfil = perfilRN.listAll();
}
}
Atenciosamente
Wellington Fernandes