Olá !
Estou fazendo um formulario e outro de edição.
A minha duvida é a seguinte como fazer para que uma List vinda do banco selecione uma outra List EX:
<select data-placeholder="Selecione os contatos" class="chzn-select" multiple name="contacts">
<c:forEach items="${contact}" var="contact">
<option value="${contact.idCon }" >${contact.name } - ${contact.number }</option>
</c:forEach>
</select>
Essa lista retorna todos os contatos do usuario no banco de dados.
Eu quero que ele retorne todos os contatos do usuario no banco de dados e selecione no os contatos relacionados ao grupo cadastrado
Eu ja possuo as duas Lists
result.include("contact", new ContactDao().listaTudo(usuarioWeb.logado));//retorna todos os contatos do usuario
result.include("contact2", grupo.getContatos());//retorna todos os contatos cadastrados no grupo
Alguem pode me ajudar ?
Sinceramente não entendi ao certo oq tu queres fazer… e onde é o problema exatamente…
Explique melhor o problema… e diga oq você já tentou fazer p/ resolvê-lo e ai acabou nao dando certo… já é um bom inicio p/ termos uma ideia melhor doq tu precisa…
Basicamente que quero que os itens presentes em uma lista selecione os itens de outra.
Eu tenho uma lista completa e outra lista com os contatos do usuario que foram selecionados.
Eu quero que essa lista de contatos selecionados apareça selecionada no quando carregar a lista completa no JSP
P/ fazer isso tens q manipular os objetos DOM da tua página… ai nessa jogada é javascript mesmo…
Você pode fazer algo assim (acho que fica mais simples):
Crie um método getJsonContacts na classe Grupo que vai retornar um JSON com os IDs dos contatos selecionados:
public String getJsonContacts (){
if (this.getContatos() == null || this.getContatos().isEmpty())
return "";
StringBuilder builder = new StringBuilder("{contacts:[");
String virgula = "";
for (Contato obj : this.getContatos()) {
builder.append(virgula).append(obj.getId());
virgula = ", ";
}
return builder.append("]}").toString();
}
Esse método vai gerar uma saída mais ou menos assim:
{contacts:[1, 2, 4, 5, 8]}
E esses vão ser os IDs dos que devem ser selecionados.
Então, no seu formulário, você precisa receber esse jsonContacts, para isso, precisa fazer um include do grupo:
result.include("group", grupo);
E depois acessar o método que criamos lá em cima.
<script>
var contacts = '${group.jsonContacts}';
// Existe a chance de não ter nenhum contato selecionado.
if (contacts.length > 0) {
contacts = eval('(' + contacts + ')').contacts; // transforma string em objeto.
var select = $('select[name="contacts"]');
for (var i = 0; i < contacts.length; i++)
select.find('option[value="' + i + '"]').attr('selected', true);
select.trigger("liszt:updated");
}
</script>
Lucas, pelo o que eu entendi, ele quer que na tela apareça os contatos que já foram selecionados e estão gravados no banco de dados…
Nesse exemplo, ele busca o conteúdo de outro select à partir do resultado de um select.
Opaaa consegui aqui estava faltando algumas alterações mas valeu mesmo cara salvou meu dia -