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. =/
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><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"><title>Testes</title><scripttype="text/javascript"src="jquery-1.4.4.min.js"></script><scripttype="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 submetidoreturntrue;});});</script></head><body><formid="formulario"><inputid="valores"name="valores"type="hidden"/><inputtype="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.