Tenho este que é preenchida com as opções corretamente
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"
layout:decorate="~{layout}">
<meta charset="utf-8">
<div layout:fragment="content">
<div class="ibox-title">
<h2>Controle de pessoas</h2>
<ol class="breadcrumb">
<li><a th:href="@{/dashboard}">Página inicial</a></li>
<li><a th:href="@{/pessoa}">Pesquisar pessoas</a></li>
<li class="active"><strong><label
th:text="@{{tipoPagina}(tipoPagina=${tipoPagina})}"></label> tipo
de pessoa</strong></li>
</ol>
</div>
<div class="ibox-title">
<form class="form-horizontal" th:object="${pessoaTipoPessoa}"
method="POST" id="codigoForm">
<input type="hidden" id="id" th:field="*{id}" readOnly="readonly" />
<input type="hidden" id="nomeFormulario" name="pessoaTipoPessoa"
readOnly="readonly" />
<input type="hidden"
id="pessoa" th:field="*{pessoa.id}" readOnly="readonly" />
<div style="text-align: right;">
<button type="submit" class="btn btn-outline btn-info dim"
data-toggle="tooltip" data-placement="bottom" title="Salvar"
data-original-title="Salvar" id="salvar">
<i class="fa fa-save"></i>
</button>
<button type="reset" class="btn btn-outline btn-default dim"
id="limpar" th:if="${tipoPagina == 'Inserir'}">
<i class="fa fa-eraser"></i>
</button>
<a th:href="@{/pessoa}" data-toggle="tooltip"
data-placement="bottom" title="Voltar" data-original-title="Voltar">
<button type="button" class="btn btn-outline btn-warning dim">
<i class="fa fa-reply"></i>
</button>
</a>
</div>
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>Formulário</h5>
</div>
<div class="ibox-content">
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<label for="tipoPessoa">Tipos da pessoa <span
class="text-danger">*</span>
</label>
<div data-toggle="tooltip" data-placement="bottom" title=""
data-original-title="Selecione o tipo de pessoa !">
<select
class="select2_demo_2 form-control select2-hidden-accessible"
multiple="multiple" tabindex="-1" aria-hidden="true"
th:field="*{tiposPessoasEscolhidas}">
<option th:each="tipo : ${tiposPessoas}" th:value="${tipo.id}"
th:text="${tipo.descricao}"></option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<div th:include="todos/campos_obrigatorios" th:remove="tag"></div>
</div>
</div>
</html>
Neste componente eu posso escolher mais de um valor, conforme imagem:
Ao clicar em salvar ele chama esta funcionalidade do jquery, mas sempre está dando erro 404, conforme imagem:
O que pode ser ?
Classe DTO, que recebe as informações:
import org.hibernate.validator.constraints.NotEmpty;
import br.com.netsoft.dto.NotaFiscalServicoDTO;
import br.com.netsoft.enuns.PessoaTipoPessoaEnum;
public class PessoaTipoPessoaDTO extends NotaFiscalServicoDTO {
private static final long serialVersionUID = 2899990968494614321L;
private PessoaDTO pessoa;
private PessoaTipoPessoaEnum tipoPessoa;
@NotEmpty
private Integer[] tiposPessoasEscolhidas;
public PessoaDTO getPessoa() {
return pessoa;
}
public void setPessoa(PessoaDTO pessoa) {
this.pessoa = pessoa;
}
public PessoaTipoPessoaEnum getTipoPessoa() {
return tipoPessoa;
}
public void setTipoPessoa(PessoaTipoPessoaEnum tipoPessoa) {
this.tipoPessoa = tipoPessoa;
}
public Integer[] getTiposPessoasEscolhidas() {
return tiposPessoasEscolhidas;
}
public void setTiposPessoasEscolhidas(Integer[] tiposPessoasEscolhidas) {
this.tiposPessoasEscolhidas = tiposPessoasEscolhidas;
}
}
Jquery que envia o metodo salvar, que funciona em outros formulários
var request;
$("#codigoForm").submit(function(event) {
var endereco = "/nota-fiscal-servico-web-1.0.0/";
var mensagem = '<h1><img src="' + endereco + 'resources/img/carregando.gif" /> Aguarde um momento...</h1>';
$.blockUI({
message : mensagem,
});
var formularioAtualizacao = endereco + "atualizacaoMonetaria/alterar/";
var formularioTomador = endereco + "tomador/alterar/";
var pessoaEndereco = "pessoaEndereco";
var atualizacaoMonetariaItem = "atualizacaoMonetariaItem";
var perguntaRespostaFrequente = "perguntaRespostaFrequente";
var formularioPerguntaFrequente = endereco + "perguntaFrequente/alterar/";
event.preventDefault();
if (request) {
request.abort();
}
var formulario = endereco + nomeFormulario.name;
var $form = $(this);
var $inputs = $form.find("input, select, button, textarea, file");
var serializedData = $form.serialize();
$inputs.prop("disable", true);
request = $.ajax({
url : formulario + "Recurso/salvar",
type : "post",
data : serializedData
});
request.done(function(response, textStatus, jqXHR) {
console.log(jqXHR);
});
request.fail(function(jqXHR, textStatus, errorThrown) {
//console.error("erro" + textStatus, errorThrown);
});
request.always(function(jqXHR) {
$inputs.prop("disable", false);
$.unblockUI(); // Desbloquear UI
if(request.status == 200){
if(request.responseText.indexOf("salvo") == -1){
toastr.error(request.responseText, "Error ...");
} else {
toastr.info(jqXHR, "Sucesso ....");
$('#codigoForm').trigger("reset");
setTimeout(function() {
tipoProcesso = formulario.indexOf(atualizacaoMonetariaItem)
if (tipoProcesso > -1) {
formulario = formularioAtualizacao + $inputs[2].value;
} else {
pessoaEndereco = formulario.indexOf(pessoaEndereco)
if (pessoaEndereco > -1) {
formulario = formularioTomador + $inputs[2].value;
} else {
perguntaRespostaFrequente = formulario.indexOf(perguntaRespostaFrequente)
if (perguntaRespostaFrequente > -1) {
formulario = formularioPerguntaFrequente + $inputs[1].value;
}
}
}
// aqui é o codigo que vai ser executado depois do tempo
// determinado no segundo parametro
window.location.assign(formulario);
// o tempo que vai levar ate a funcao ser executada, em
// milisegundos
}, 1000);
}
} else {
toastr.error(request.status, "Error ...");
}
});
});