Pra que repetir dados na tabela?
a seleção só vai funcionar com um rowKey unico, normalmente o id
Se você definir que o rowKey é um nome, nenhuma linha poderá ter o mesmo nome
No banco pode vir registro duplicado mesmo, mas se essa não é a intenção, a função distinct(campo) cuida disso
É que o meu id é gerado automático pelo BD, então eu não posso garantir um elemento único durante a inserção dos dados nesse dataTable, ai eu fico sem um elemento para definir no rowkey.
Se o id de um elemento é diferente de outro, ele ja é unico.
Vejamos esse exemplo de dois produtos:
Produto 1:
Id: 100
descricao: Serve para cortar.
peso: 100g.
cor: preto.
imagem: c:imagemProdutoQueCora.png
Produto 2:
Id: 101
descricao: Serve para cortar.
peso: 100g.
cor: preto.
imagem: c:imagemProdutoQueCora.png
No ponto de vista de caracteristicas, eles são iguais, fazem a mesma coisa, mesmo peso, mesma imagem, só que o id diz que são diferentes.
Se você definir o rowKey pro id, a dataTable considerará que são diferentes.
O cenário apresentado acima, pode acontecer facilmente.
Você pode tratar na inserção ou tratar no select
No select você usa a funcao distinct
Apesar de não ser a maneira correta eu consegui resolver o problema do rowKey.
Agora está sendo o botão de remover.
<p:commandButton id="rmvEquip" value="Remover" action="#{parciaisEdesImobAreasController.rmvItemList}" update="dataTable" ajax="false" process="@this"/>
Pois mesmo o process está sendo para apenas ele mesmo, o required dos campos como projeto, está barrando ele de executar seu método, exclamando que eles devem ser preenchidos, existe alguma maneira de se contornar isso?
Já consegui também,
Era só adicionar o immediate=“true” no botão
Estranho, apenas o process já deveria resolver isso, não seria necessário o immediate.
Pois o process processa só o que voce mandar, ignorando o restante