Ajuda c/ Primefaces Datatable Selection Basic

4 respostas
java
P

Olá estou com problemas para usar esse recurso do primefaces, já olhei o exemplo do case no site do primefaces.org, mas não entendi direito como a meu bean recebe o parametro da linha do dataTable e como ele deve mostrar isso no dialog, segue abaixo meu codigo e meu bean, se puderem me ajudar desde já agradeço

Essa é a view jsf

``<h:form id=“form”>

<p:growl id=“msgs” showDetail=“true” />

<p:dataTable id=“tbpanel” var=“panel” value="#{ContaBean.lista_contas}" style=“font-size:11px;max-width:1200px” scrollable=“true” scrollHeight=“250”>

<f:facet name=“header” style=“font-size:16px”>

</f:facet>

<p:column headerText=“Numero”  >
``

---------> CLASSE BEAN

import java.util.List;

import javax.annotation.PostConstruct;

import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.RequestScoped;

import javax.faces.context.FacesContext;

import org.primefaces.event.SelectEvent;

import org.primefaces.event.UnselectEvent;

@ManagedBean(name=“ContaBean”)
@RequestScoped

public class Conta {

private String id;

private String numero;

private String cliente;

private String dt_atendimento;

private String status;

private List lista_contas;

private Conta selectedConta;

private List selectedContas;

private Conta conta;
@PostConstruct

public void init(){

this.setConta(new Conta());

}

public String getNumero() {

return numero;

}

public void setNumero(String numero) {

this.numero = numero;

}

public String getCliente() {

return cliente;

}

public void setCliente(String cliente) {

this.cliente = cliente;

}

public String getDt_atendimento() {

return dt_atendimento;

}

public void setDt_atendimento(String dt_atendimento) {

this.dt_atendimento = dt_atendimento;

}

public String getStatus() {

return status;

}

public void setStatus(String status) {

this.status = status;

}

public List getLista_contas() {

lista_contas=new DaoConta().parcial_panel();

return lista_contas;

}

public void setLista_contas(List lista_contas) {

this.lista_contas = lista_contas;

}
public Conta getConta() {

return conta;

}
public void setConta(Conta conta) {

this.conta = conta;

}

public Conta getSelectedConta() {

return selectedConta;

}
public void setSelectedConta(Conta selectedConta) {

this.selectedConta = selectedConta;

}
public List getSelectedContas() {

return selectedContas;

}
public void setSelectedContas(List selectedContas) {

this.selectedContas = selectedContas;

}

public void onRowSelect(SelectEvent event) {

FacesMessage msg = new FacesMessage(Conta selecionada, ((Conta) event.getObject()).getId());

FacesContext.getCurrentInstance().addMessage(null, msg);

}
public void onRowUnselect(UnselectEvent event) {

FacesMessage msg = new FacesMessage(Conta não selecionada, ((Conta) event.getObject()).getId());

FacesContext.getCurrentInstance().addMessage(null, msg);

}
public String getId() {

return id;

}
public void setId(String id) {

<a href="http://this.id">this.id</a> = id;

}

}

---------> CLASSE DAO

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

public class DaoConta {

public List<Conta> parcial_panel(){
    
    Conexao con = new Conexao();
    Connection conexao = con.conecta();
    List<Conta> listaContas = new ArrayList<Conta>();
    ResultSet res=null;
    Statement stm = null;
    
    String sql="SELECT CLIENTE.NOME FROM DBAMV.CLIENTE";
    
    try{
        
        stm=conexao.createStatement();
        res=stm.executeQuery(sql);
        
        
        
         while(res.next()){            
        Conta co = new Conta();
        co.setCLIENTE(res.getString("NOME"));
   

        listaContas.add(co);
    
         }
    }catch(SQLException e){
        System.out.println("Ocorreu um erro na conexao com o banco no momento de inserir a lista de contas.");
        
    }finally{
        try{
            stm.close();
            conexao.close();
        }
        catch(Throwable e){
            System.out.println("Ocorreu um erro ao tentar fechar a conexao.");
        }
    }
    
    return listaContas;
    
}

}

4 Respostas

lucciano01

`< p:commandButton oncomplete=“PF(‘contaDialog’).show()” icon=“ui-icon-search” title="View"
action = "#{ContaBean.contaSelecionada( )}

//apague essa linha
< f:setPropertyActionListener value="#{panel}" target="#{ContaBean.selectedContas}" />

< /p:commandButton>

no managedbean

private DataModel dataModelContas;

public DataModel getDataModelContas( ){

if( dataModelContas ==  null ){

dataModelContas = new ListDataModel<>(getLista_contas( ));

}

return dataModelContas;

}
public Conta contaSelecionada( ){

return dataModelContas.getRowData( );

}

`

P

Primeiro obrigado Luciano,
uma pergunta no metodo getDataModelContas( ) não deveria ser do tipo DataModel para retornar isso ?

P

Não rolou

#{ContaBean.contaSelecionada()}: java.lang.NullPointerException

javax.faces.FacesException: #{ContaBean.contaSelecionada()}: java.lang.NullPointerException

at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:117)

at javax.faces.component.UICommand.broadcast(UICommand.java:315)

at javax.faces.component.UIData.broadcast(UIData.java:1106)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

vou tentar pegar melhor o erro

lucciano01

`opa é mesmo, obg pela correção;

acredito então que deva ser a questão do escopo

troca de @RequestScoped para @ViewScoped

e faz isso também

< p:commandButton oncomplete=“PF(‘contaDialog’).show()” icon=“ui-icon-search” title="View"
actionListener = "#{ContaBean.contaSelecionada( ) update =@form}
`

Criado 28 de março de 2016
Ultima resposta 29 de mar. de 2016
Respostas 4
Participantes 2