opa rodrigo, é dessa forma que está funcionando, o problema é o
seguinte, essas empresas vou adicionar no Usuario.SetEmpresas(uma
lista), só que ainda nao existe um usuario criado, na tela de criar o
usuario tbm é onde preciso já inserir as empresas, e quando eu chamar
o metodo salvar ele vai fazer aldo do tipo.
Usuario.setEmpresas(this.empresas);
salvarusuario...
só que se eu fizer isso esses this.empresas setará somente o ultimo,
pois ele está salvando somente 1, quanto a povoar a lista e mostrar na
tabela ja estou conseguindo fazer isso sim atraves do json o problema
é que em vez dessa lista possuir 2, 3 , 4 ou quantas empresas eu
quiser adicionar, sempre esta ficando somente a ultima empresa que eu
estou efetuando o .add, e quando eu chamar o metodo salvar em vez de
ter as 5 ou N empresas que eu adicionei, só terá a ultima que foi a
que eu adicionei por ultimo.
meu codigo atualmente está da seguinte forma:
@Resource
public class UsuarioController {
private final UsuarioRepositorio userRep;
private final Result result;
private final EmpresaRepositorio empresaRep;
private final List<Empresa> empresas = new ArrayList<Empresa>();
public UsuarioController(UsuarioRepositorio rep, Result result,
EmpresaRepositorio empresaRep) {
this.userRep = rep;
this.result = result;
this.empresaRep = empresaRep;
}
public void formulario() {
this.result.include("empresaList", this.empresas);
}
//outros metodos
public void salvar(Usuario usuario) {
Integer codigo = usuario.getCodigo();
if(codigo == null || codigo == 0) {
//usuario.setEmpresas(this.empresas); //aqui que estou setando as
empresas no usuario
usuario.getPermissao().add("ROLE_USUARIO");
usuario.setAtivo(true);
this.userRep.save(usuario);
} else {
this.userRep.update(usuario);
}
result.redirectTo(this).listar();
}
@Post
@Path("/usuario/addEmpresa/{codigoExterno}")
public void addEmpresa(int codigoExterno) {
if(codigoExterno != 0 ) {
Empresa emp = this.empresaRep.findEmpresaById(codigoExterno);
this.empresas.add(emp);
}
result.use(Results.json()).withoutRoot().from(empresas).serialize();
}
}
na minha pagina:
$(document).ready(function(){
$('#addEmpresa').on('click', function(){
var self = $('#codigoDaEmpresa');
var selecionado = self.val(); // pega o codigo digitado no input
$.ajax({
url:'<c:url value="/usuario/addEmpresa/" />'+selecionado,
type: 'POST',
dataType:'json',
success:function(data){
var options = [];
for (var i = 0; i < data.length; i++) {
options.push('<td>'+data[i].codigo+'</td>');
}
// Agora estou juntando os options dentro do componente
$('#povoarEmpresa').html(options.join());
},
error:function(){
alert('Erro');
}
});
});
});