Boa tarde!
Ao atualizar um registro com o PickList, os registros já inseridos no banco de dados são duplicados, estou usando um método externo para tratar isso, e gostaria de saber se há algum atributo ou modo mais simples de resolver esse problema, para que os registros inseridos ao lado direito do PickList sejam atualizados perfeitamente.
Desde já obrigado.
Voce Pode Colocar o Codigo do Metodo ??
O componente PickList:
<rich:pickList
id="contID"
value="#{conteudoDigitalAction.listaDocumentosSelecionados}"
orderable="true" listWidth="10em"
sourceListWidth="300px"
targetListWidth="300px"
copyControlLabel="Selecionar"
copyAllControlLabel="Selecionar todos"
removeControlLabel="Remover"
removeAllControlLabel="Remover todos"
>
<s:selectItems value="#{tblDocumentoList.resultList}" var="doc"
label="#{doc.idDocumento} - #{doc.titulo} - #{doc.subtitulo}">
</s:selectItems>
<s:convertEntity/>
</rich:pickList>
As declarações das variáveis:
Name("conteudoDigitalAction")
@Scope(ScopeType.PAGE)
public class ConteudoDigitalAction { // extends EntityController
@In(create = true)
private TblConteudoDigitalHome tblConteudoDigitalHome;
@In(create = true)
private TblConteudoDigitalDocumentoHome tblConteudoDigitalDocumentoHome;
private List<TblDocumento> listaDocumentosSelecionados=new ArrayList<TblDocumento>();
O método que faz a edição do registro:
public String editarConteudoDigital() {
String ret = "";
TblConteudoDigital conteudoDigital = this.tblConteudoDigitalHome.getInstance();
Set<TblConteudoDigitalDocumento> conteudoDigitalDocto = new HashSet<TblConteudoDigitalDocumento>();
for(TblConteudoDigitalDocumento docto: conteudoDigital.getTblConteudoDigitalDocumentos()){
for (TblDocumento doctosSelecionados: listaDocumentosSelecionados) {
if(doctosSelecionados.getIdDocumento()==docto.getTblDocumento().getIdDocumento()){
TblConteudoDigitalDocumento conteudoDigitalDoc = new TblConteudoDigitalDocumento();
conteudoDigitalDoc.setTblDocumento(doctosSelecionados);
conteudoDigitalDoc.setTblConteudoDigital(conteudoDigital);
conteudoDigitalDocto.add(conteudoDigitalDoc);
}
}
}
conteudoDigital.setTblConteudoDigitalDocumentos(conteudoDigitalDocto);
tblConteudoDigitalHome.clearInstance();
tblConteudoDigitalHome.setInstance(conteudoDigital);
ret = tblConteudoDigitalHome.update();
System.out.println(ret);
return ret;
}