Estou apanhando pra caramba para tentar chamar uma action do struts2 passando um array como parâmetro, já tentei de diversas formas e até agora não rolou:
Minha Action mapeada no ajax-json.xml
(Coloquei aqui a action como texto comum pois ela some se coloco os <>)
action name="salvarAlteracao" class="SalvarAlteracaooAction"
interceptor-ref name="defaultStack"/
interceptor-ref name="json"
param name="enableSMD">true</param
/interceptor-ref
/action
Javascript
function salvar() {
var soma = 0.0;
var pessoas = [];
var lista = document.querySelectorAll("input");
Array.prototype.forEach.call(lista, function(campo) {
var pessoa = {'idUnidPessoa':campo.id, 'percentual':document.getElementById(campo.id).value};
pessoas.push(pessoa);
});
var url = '<s:url action="salvarAlteracao" namespace="/ajax-json" includeParams="none" />';
var data = JSON.stringify(pessoas);
console.log(data);
$.ajax({
url: url,
type: "post",
data: data,
dataType: 'json',
contentType:"application/json;charset=utf-8",
async : false,
success : function(){
alert("Foi!!!");
}
});
}
Minha ação do struts2
private List<AlterarPessoaVO> data;
@SuppressWarnings("unused")
@Override
public String execute() {
try {
// faz algumas coisas
} catch (TarianaException e) {
log.error(e);
return ERROR;
}
return SUCCESS;
}
public List<AlterarPessoaVO> getData() {
return data;
}
public void setData(List<AlterarPessoaVO> data) {
System.out.println("Entrei aqui...");
this.data = data;
}
Meu objeto AlterarPessoaVO:
public class AlterarPessoaVO implements Serializable {
private static final long serialVersionUID = 1L;
private String idUnidPessoa;
private String percentual;
public String getIdUnidPessoa() {
return idUnidPessoa;
}
public void setIdUnidPessoa(String idUnidPessoa) {
this.idUnidPessoa = idUnidPessoa;
}
public String getPercentual() {
return percentual;
}
public void setPercentual(String percentual) {
this.percentual = percentual;
}
}
A Exception:
Exception occurred during processing request: Unable to deserialize JSON object from request: org.apache.struts2.json.JSONException: Unable to deserialize JSON object from request
Qualquer ajuda será bem vinda,