Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 为什么带有datatable的复合组件中的rowSelect事件在页面更改时不起作用?_Jsf 2_Primefaces_Datatable_Composite Component - Fatal编程技术网

Jsf 2 为什么带有datatable的复合组件中的rowSelect事件在页面更改时不起作用?

Jsf 2 为什么带有datatable的复合组件中的rowSelect事件在页面更改时不起作用?,jsf-2,primefaces,datatable,composite-component,Jsf 2,Primefaces,Datatable,Composite Component,我的问题很简单:我有一个复合组件,它基本上是一个带有rowSelect事件的延迟加载数据表。当我在第一页的任何一行上单击时,事件都会很好地确定,但是当我切换到另一页时,事件不会像上一页那样设置实体。有人经历过这个吗 视图: -枚举 public enum Constantes { ORDEM_ASCENDENTE("ASC"), ORDEM_DESCENDENTE("DESC"); private String valor; private Constante

我的问题很简单:我有一个复合组件,它基本上是一个带有rowSelect事件的延迟加载数据表。当我在第一页的任何一行上单击时,事件都会很好地确定,但是当我切换到另一页时,事件不会像上一页那样设置实体。有人经历过这个吗

视图:

-枚举

public enum Constantes {

    ORDEM_ASCENDENTE("ASC"),
    ORDEM_DESCENDENTE("DESC"); 
    private String valor;
    private Constantes(){}  
    private Constantes(String valor){
        this.valor = valor;
    }
    public String getValor() {
        return valor;
    }
}

请以SSCCE格式发布您的代码。老实说,此代码不是SSCCE格式。我忘记了VO,感谢您帮助组织发布BALUCC
public abstract class ComponentePesquisaGenerico<T> extends UINamingContainer {

private String ordenacao = Constantes.ORDEM_ASCENDENTE.getValor();
private String camposOrdenacao = null;
private boolean carregarDados = true;
private boolean primeiraPagina = false;
private int pageSize = 5;
private int firstRow = 0;

private LazyDataModel<T> lazyModel= new LazyDataModel<T>() {
    private static final long serialVersionUID = 1L;
    private  List<T> result = null;
    @Override
    public void setRowIndex(int rowIndex) {
        if (rowIndex == -1 || getPageSize() == 0) {
            super.setRowIndex(-1);
        } else {
            super.setRowIndex(rowIndex % getPageSize());
        }    
    }

     public T getRowData(String rowKey)
        {
          for (T objeto : this.result) {
            if (objeto.toString().equals(rowKey)) {
              return objeto;
            }
          }
          return null;
        }

        public Object getWrappedData()
        {
          if ((this.result == null) || (!this.result.isEmpty())) {
              carregarDados = Boolean.TRUE;
            this.result = load(0, 5, null, null, null);
          }
          return this.result;
        }


        public Object getRowKey(T row)
        {
          @SuppressWarnings("unused")
        Object valor = getAttributes().get("value");
          valor = row;
          return row;
        }


    @Override
    public List<T> load(int first, int pageSize, String sortField,SortOrder sortOrder,       Map<String, String> filters) {



        result = new ArrayList<T>();
        setRowCount(0);

        if (sortField != null && !sortField.isEmpty()){
            camposOrdenacao = sortField;
            if (sortOrder.equals(SortOrder.ASCENDING)){
                ordenacao = Constantes.ORDEM_ASCENDENTE.getValor();
            } else {
                ordenacao = Constantes.ORDEM_DESCENDENTE.getValor();
            }
        }

        if (carregarDados) {
            if (!primeiraPagina) {
                firstRow = first;
                ResultadoConsultaVO<T> resultado = listarRegistrosParaDataTable();
                result = resultado.getListaDeRegistros();
                setRowCount(resultado.getTotal());
                setWrappedData(result);
            } else {
                primeiraPagina = false;
            }
        }else{
            result = new ArrayList<T>();
        }

        RequestContext.getCurrentInstance().update("pesquisa_listaEstabelecimento");
        return result;
    }
    };

    protected abstract ResultadoConsultaVO<T> listarRegistrosParaDataTable();

    /* gets e sets*/
    }
@FacesComponent("pesquisarPessoasComponente")
public class PesquisarPessoasComponente extends ComponentePesquisaGenerico<Entidade>{

private UIInput uiCodigo;
private UIInput uiNomeentidade;
private DataTable dataTable;
private Entidade objetoSelecionado;
private EntidadeService entidadeService = new EntidadeService();



@Override
protected ResultadoConsultaVO<Entidade> listarRegistrosParaDataTable() {

    String codigoCnes =(String) getUiCodigo().getValue();
    String nomeFantasia =(String) getUiNomeentidade().getValue();

    return entidadeService.pesquisarEntidade(codigoCnes, nomeFantasia,              getFirstRow(),getPageSize());
}

public void pesquisar(ActionEvent event){
    setCarregarDados(Boolean.TRUE);
}

public void limpar(CloseEvent event){
    setCarregarDados(Boolean.FALSE);
}

public void onRowSelect(SelectEvent event) {
    System.out.println(((Entidade)event.getObject()).getCodigo());
    System.out.println( getObjetoSelecionado().getCodigo());

}

/* gets e sets*/


}
@ManagedBean(name="bean")
@SessionScoped
public class Bean {
private Entidade entidadeSelecionada;


public void listener(){
    //faco alguma coisa com a entidade selecionada;
    System.out.println("Nome Escolhido");
    System.out.println(entidadeSelecionada.getNome());
    }
    /*gets e sets*/
   }

public class EntidadeService {

public ResultadoConsultaVO<Entidade> pesquisarEntidade(String codigo, String nome,Integer inicio,Integer tamanhoPagina){
    if(StringUtils.isBlank(codigo) && StringUtils.isBlank(nome))
        return new ResultadoConsultaVO<Entidade>(criarEntidades().size(),criarEntidades().subList(inicio, (tamanhoPagina+inicio)));

    return null;
}




private List<Entidade> criarEntidades(){
    List<Entidade> entidades = new ArrayList<Entidade>();

    entidades.add(new Entidade("1","Arlette Hayden"));
    entidades.add(new Entidade("2","Scot Goodpasture"));
    entidades.add(new Entidade("3","Shin Hymel"));
    entidades.add(new Entidade("4","Phoebe Mau"));
    entidades.add(new Entidade("5","Dominica Hauff"));
    entidades.add(new Entidade("6","Flor Anker"));
    entidades.add(new Entidade("7","Charlott Morin"));
    entidades.add(new Entidade("8","Tamar Leer"));
    entidades.add(new Entidade("9","Shauna Giraldo"));
    entidades.add(new Entidade("10","Orlando Brennen"));
    entidades.add(new Entidade("11","Nancie Norman"));
    entidades.add(new Entidade("12","Kourtney Luttrell"));
    entidades.add(new Entidade("13","Mila Shankles"));
    entidades.add(new Entidade("14","Lucien Ollison"));
    entidades.add(new Entidade("15","Felisha Burruel"));
    entidades.add(new Entidade("16","Precious Monteiro"));
    entidades.add(new Entidade("17","Clotilde Fishel"));
    entidades.add(new Entidade("18","Tamiko Hardegree"));
    entidades.add(new Entidade("19","Risa Marquette"));
    entidades.add(new Entidade("20","Pa Currington"));
    entidades.add(new Entidade("21","Graig Guardiola"));
    entidades.add(new Entidade("22","Micha Knop"));
    entidades.add(new Entidade("23","Adela Palmeri"));
    entidades.add(new Entidade("24","Keeley Loisel"));
    entidades.add(new Entidade("25","Christal Flynn"));
    entidades.add(new Entidade("26","Dee List"));
    entidades.add(new Entidade("27","Victor Hurst"));
    entidades.add(new Entidade("28","Soo Chadwell"));
    entidades.add(new Entidade("29","Reva Jimerson"));
    entidades.add(new Entidade("30","Jerrica Stolz"));


    return entidades;
}
public class ResultadoConsultaVO<T> {
  private int total;
  private List<T> listaDeRegistros;

public ResultadoConsultaVO() {

}

public ResultadoConsultaVO(int total, List<T> listaDeRegistros) {
    super();
    this.total = total;
    this.listaDeRegistros = listaDeRegistros;
}
    }
public class Entidade implements Serializable {


    private static final long serialVersionUID = 1L;

    private String codigo;
    private String nome;



    public Entidade() {
        super();
    }
    public Entidade(String codigo, String nome) {
        super();
        this.codigo = codigo;
        this.nome = nome;
    }
}
public enum Constantes {

    ORDEM_ASCENDENTE("ASC"),
    ORDEM_DESCENDENTE("DESC"); 
    private String valor;
    private Constantes(){}  
    private Constantes(String valor){
        this.valor = valor;
    }
    public String getValor() {
        return valor;
    }
}