Problemas com Rowkey Primefaces

2 respostas
F

Amigos,

Migrei do Primefaces 2.2.1 para o 3 e estou enfrentando um problema com o Datatable, mas especificamente o atributo rowKey, se o meu campo de identificação é do tipo string e composto apenas de números e exceder 16 caracteres, o registro não vai para a seleção da lista especificada no atributo selection, creio eu, que quando o número de identificação é formado só por números, ele converte para int ou long ou outro tipo;

exemplo

Se o ID é 17100000006330000117, o registro é truncado, fiz um teste mudando o primeiro número para uma letra e funcionou, A7100000006330000117, nesse caso ele deve enxergar como String;
da mesma forma, se eu tiver o Id 000063354874 (os zeros são parte do Id), o registro é truncado, porque a conversão é feita e os zeros são tirados.

Existe alguma maneira de remediar esta situação, ou só voltando pro 2.2.1?

2 Respostas

E

Parece que é uma limitação mesmo por ser int. Poderia fazer um cast ou aplicar uma fórmula e depois fazer o inverso mas perigo influenciar legal o desempenho e virar uma gambi.

F

E o pior é q já mudei de tática, criei um DataModel e implementei o SelectableDataModel como eles falam no material e nada;

@Override
    public Art getRowData(String rowKey) {
        List<Art> arts = (List<Art>) getWrappedData();
        for (Art art : arts) {
            if (art.getNumeroArt().equals(rowKey)) {
                return art;
            }
        }
        return null;
    }

    @Override
    public Object getRowKey(Art art) {
        return art.getNumeroArt();
    }

quando o registro selecionado no DataTable é com o Id 17100000006330000117 por exemplo, ao passar pelo getRowData o rowKey fica 17100000006330001000, ou seja, como falei anteriormente, limite de 16 caracteres.

Criado 10 de janeiro de 2012
Ultima resposta 10 de jan. de 2012
Respostas 2
Participantes 2