Passar valores do js para jstl/jsf

6 respostas
junspector

eu tenho um js com elementos de drag&drop (usando esse componente http://www.ajaxplaza.net/dragndrop/dragndrop.htm) e preciso pegar as coordenadas de posição do elemento e passar pro jstl/jsf para poder armazenar esses valores e poder recarregar isso posteriormente, só que não sei como fazer isso.

eu tentei usar os componentes de drag&drop do primefaces e richfaces, mas eles não oferecem suporte ao armazenamento da posição do elemento draggable. =/

6 Respostas

davidbuzatto

Armazene as coordenadas de alguma forma (um array associativo por exemplo) e quando for enviar os dados, basta pegar esses dados, formatá-los de alguma forma e mandar para o servidor como um campo de formulário normal.

Vc está usando alguma biblioteca JS?

davidbuzatto

Na verdade, nem precisa armazenar, visto que esses dados podem ser obtidos diretamente dos componentes DnD.

junspector

pois é, como mandar isso pro servidor como se fosse um campo de formulário normal? =/

davidbuzatto

Vc está usando alguma biblioteca JS?
Vou fazer um exemplo aqui p/ vc usando jQuery.

junspector

esse componente é da JQuery (http://plugins.jquery.com/project/dragndrop) e eu tô usando jsf2.0 (implementação mojarra, servidor glassfish) e primefaces para os componentes de interface.

davidbuzatto

Dê uma olhada.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Testes</title>

        <script type="text/javascript" src="jquery-1.4.4.min.js"></script>

        <script type="text/javascript">

            $( document ).ready( function(){

                // registra o manipulador para o evento submit do formulario
                $( "#formulario" ).submit( function() {

                    // obtém os valores dos DnD, cria uma String e configura o valor
                    // do campo escondido "valores" com essa String.
                    $( "#valores" ).val( "1:3;6#2:4;5#3:9;1" );
                    
                    // returna true indicando que pode ser submetido
                    return true;

                });

            });

        </script>

    </head>

    <body>
        
        <form id="formulario">
            <input id="valores" name="valores" type="hidden"/>
            <input type="submit" value="Enviar"/>
        </form>

    </body>

</html>

Como você quer um formulário tradicional (síncrono), vc cria um campo escondido dentro dele que vai conter os dados dos DnDs.
Note que no código eu registro o evento onsumit do formulário (id = formulario) e dentro dele obtenho os dados dos DnDs. Na verdade não estou obtendo, isso vc que vai ter que fazer. No meu caso, coloquei a string "1:3;6#2:4;5#3:9;1" significando:
1:3;6 => DnD 1 em x = 3; y = 6
2:4;5 => DnD 2 em x = 4; y = 5
3:9;1 => DnD 3 em x = 9; y = 1

Então no servidor, vc obtém essa string (parâmetro "valores") e recorta ela p/ poder construir a representação que você precisa dos DnDs do lado Java.
Note que não especifiquei a action do formulário, mas vc precisa especificar.

Entendeu o funcionamento?

[]'s

Criado 9 de janeiro de 2011
Ultima resposta 9 de jan. de 2011
Respostas 6
Participantes 2