Olá pessoal,
eu tenho o seguinte método em um controller:
result.use(Results.json()).from(lista).serialize();
funciona tudo certinho, porém, eu precisava fazer um replace em um nome de uma campo dos objetos gerado pelo JSON antes de enviar para a aplicação, só que dependendo da situação hora eu vou trocar o nome de um campo, hora de outro… será que tem como ???
[]'s
se a lista for do mesmo objeto, não tem um jeito tão fácil de fazer isso…
pq vc quer fazer isso?
é que eu não achei nenhum outro jeito para informar no plugin autocomplete do jquery qual campo ele deve usar como value. abaixo esta meu código js:
$(document).ready(function() {
$("#campoLocalizarValorAtividade").autocomplete({
source : function(request, response) {
$.ajax({
url : "atividade/buscaAutoComplete",
dataType : "json",
data : {
style : "full",
maxRows : 12,
campo : $('#campoLocalizarAtividade').val(),
valor : request.term
},
success : function(data) {
response($.map(data.list, function(item) {
return {
label : item.descricao,
value : item.codigo
};
}));
}
});
},
minLength : 2,
open : function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close : function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
});
onde eu tenho value : item.codigo eu tenho que mudar conforme a seleção em uma combobox.
jeito fácil de fazer isso, crie a classe:
public class Autocomplete {
private String label;
private String value;
public Autocomplete(String label, String value) {...}
// getters
}
e transforme a sua lista numa lista de Autocomplete, passando os valores que vc quer:
List<Autocomplete> lista =...
for (Coisa coisa : coisas) {
lista.add(new Autocomplete(coisa.getDescricao(), coisa.getCodigo()));
}
result.use(Results.json()).withoutRoot().from(lista).serialize();