Criar lista dinamica Vraptor

2 respostas
david.cs20

Ola sou novo com o vraptor porem já consigo me virar com algumas coisas CRUD's, regras de negocio.
Porem em um projeto a qual estou trabalhando surgiu a necessidade de fazer um grupo de usuários com os que estão cadastrados no sistema.
Dei uma pesquisada na internet e encontrei o exemplo um pouco parecido feito pelo o W. Botelho [url]http://www.wbotelhos.com.br/2010/12/06/manipulando-listas-com-jquery-e-vraptor-3/[/url]
E tentei implementar da seguinte forma:
No exemplo do botelho ele insere o titulo do filme eu criei um botão a qual o usuário seleciona o grupo que já esta criado no sistema.
No fieldset de usuários também inserir o mesmo tipo de botão so que selecionando os usuários a qual já possuem no sistema. porem seguindo o exemplo do botelho ele cria um índice com o "name" e não consegui fazer o mesmo com o "id" do campo. E só consigo mandar o usuário para o primeiro campo da lista.
Segue abaixo o código da tela cadastrar e o modelo caso seja necessário para me ajudarem:

Cadastro.jsp
<form id="contentInterno" action="adicionar">
                        <fieldset style="width: 300px;">
                                <legend>Grupo Entrevistadores</legend>
                                <label>Grupo:</label>
                                <input id="Label_supervisor" type="text"
name="entrevistador.supervisor" value="${entrevistador.supervisor}"/>
                                <input type="button" onClick="listaSupervisor()" value="...">
                        </fieldset>

                        <fieldset id="entrevistador-container" style="width: 300px;">
                                <legend>
                                        Entrevistadores
                                        <img  
/>
                                &lt;/legend&gt;

                                &lt;c:forEach items="${entrevistador.usuariosList}" var="item"
varStatus="status"&gt;
                                        &lt;div data-index="${status.index}" class="entrevistador-item"&gt;
                                                &lt;label&gt;Nome:&lt;/label&gt;
                                                &lt;input type="text" onClick="listaEntrevistador()"
name="entrevistador.usuariosList[${status.index}].nome" value="$
{item.nome}"/&gt;
                                                &lt;input type="button" onClick="listaEntrevistador()"
value="..."&gt;
                                                <img  
/>
                                        &lt;/div&gt;
                                &lt;/c:forEach&gt;
                        &lt;/fieldset&gt;<br/>

                        &lt;button type="submit" class="salvar" onclick="salvar()"&gt;Salvar&lt;/
button&gt;
                &lt;/form&gt;

                &lt;script type="text/javascript"&gt;
                        $('.btn-remover-ator').live('click', function() {
                                $(this).parent().remove();
                        });

                        function adicionarEntrevistador() {
                                var $container  = $('#entrevistador-container'),
                                        $entrevistadors = $container.children('.entrevistador-item'),
                                        firstIndex      = $entrevistadors.first().data('index'),
                                        lastIndex       = $entrevistadors.last().data('index');

                                if (firstIndex === undefined) {
                                        firstIndex = 0;
                                        lastIndex = 0;
                                }

                                var index = parseInt(firstIndex) + parseInt(lastIndex) + 1;

                                $('&lt;div class="entrevistador-item"&gt;' +
                                        '&lt;label&gt;Nome:&lt;/label&gt;' +
                                        '&lt;input id="Label_Entrevistador" type="text"
name="entrevistador.usuariosList[' + index + '].nome" value="$
{item.nome}"/&gt;' +
                                        '&lt;input type="button" onClick="listaEntrevistador()" value="..."&gt;
'+
                                        '<img  />\'
alt=&quot;Remover&quot; class=&quot;btn-remover-ator&quot;/&gt;' +
                                '&lt;/div&gt;')
                                .data('index', index)
                                .appendTo($container);
                        };
                        function listaSupervisor() {
                                window
                                                .open(
                                                                'listaSupervisor',
                                                                'Popup',
                                                                'toolbar=no, location=no, search=no, directories=no,
status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=yes,
width=650, height=380');
                                document.formEnvio.submit();
                        };
                        function listaEntrevistador() {
                                window
                                                .open(
                                                                'listaEntrevistador',
                                                                'Popup',
                                                                'toolbar=no, location=no, search=no, directories=no,
status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=yes,
width=650, height=380');
                                document.formEnvio.submit();
                        };
                        function salvar() {
                                alert('Grupo de entrevistadores cadastrado com sucesso !!!');
                        };
                &lt;/script&gt;
Classe de modelo:
@Entity
public class Entrevistador {
        @Id
        @GeneratedValue
        private Long id;
        @ManyToMany (targetEntity = Grupo.class, fetch = FetchType.LAZY)
        @ForeignKey(name="fk_grupo_GrupoEntrevistador")
        private Grupo grupo;
        private Collection&lt;Usuario&gt; usuariosList;
        //get e set

}

2 Respostas

guivirtuoso

davi.cs20,

No exemplo do Botelho… (http://www.wbotelhos.com.br/2010/12/06/manipulando-listas-com-jquery-e-vraptor-3/), que você mencionou, ele usa uma função javaScipt após cada adição e remoção.

reorderIndexes();

Talvez seja isto que esteja faltando no seu caso.

:wink:

david.cs20

Humrum o Washington fez algumas modificações no projeto a qual me ajudaram bastante e assim que conseguir implementar para o meu caso eu posto aqui para caso alguém precise.
Mais mesmo assim muito obrigado !

Criado 7 de fevereiro de 2012
Ultima resposta 17 de fev. de 2012
Respostas 2
Participantes 2