martes, 7 de abril de 2009

Obtener etiquetas de un .properties con JavaScript, DWR y Spring

Hoy por fin retomo la publicación en el blog...¿la razón? Tengo algo interesante que comentar y compartir =).

Tenia asignada una tarea donde tenia que usar una lista dinámica como command de un controller, con Spring, claro.

Ese problema menos mal ya lo habia solucionado con anterioridad. Pero sabia que la parte fuerte estaba en las validaciones y que estas tendrian que ser via JavaScript. ¡Look and Feel!

Bueno eso tampoco era problema...de no ser porque la aplicación maneja muchos idiomas. Aunque por ahora solo nos han pedido Ingles y Español.

¿Y cual es el problema? Pues que los mensajes debian ser estandarizados y mostrados según el idioma que el usuario hubiera escogido desde la primera ventana.

Estamos usando archivos para los mensajes (.properties). Asi que tambien estaban estandarizados los textos de los mensajes.

Entonces...el problema era invocar esas etiquetas desde JavaScript enviando simplemente el key de las mismas...y quizás algún argumento adicional.

Pensando, consultando y leyendo algo...finalmente tome partecitas de algunos consejos, de algunas clases ya implementadas en nuestro framework y un poco de imaginación.

Les presento la solución que le di a este pequeño inconveniente de llamar etiquetas de un archvio de mensajes desde un método JavaScript...usando DWR y Spring =).

Usemos el ejemplo siguiente para mostrar como se podria solucionar la cuestión planteada: deseamos registrar una a una un listado de personas asistentes a un evento. Sin embargo, debemos cuidar que el nombre de la persona siempre sea ingresado.

La solución fue planteada basandome en un método que tiene el SimpleFormController:

[sourcecode language='java']
public String getText(String msgKey, Locale locale) {
return getMessageSourceAccessor().getMessage(msgKey, locale);
}
[/sourcecode]

Entonces la idea para llamar a este método desde algún metodo JavaScript era al menos pasar el Key y el Locale (por el idioma).

Sabia que el Key dependia de lo que quisiera mostrar asi que ello no era problema. Sin embargo el Locale...bueno lo podia conseguir haciendo uso del HttpServletRequest...entonces el foquito empezo a prenderse. Si requeria un objeto HttpServletRequest lo podria obtener a través del Controller.

Entonces, conversando con un compañero de trabajo acerca de ello me sugirió que podria inyectar el request en alguna clase que hiciera un llamado al metodo getText u otro método que hiciera lo mismo. Entonces la idea empezó a tener consistencia:

1. Debia crear una clase a la que pudiera inyectar un objeto HttpServletRequest a través del Controller.
2. Crear un método en la clase mencionada que hiciera lo mismo que el getText del SimpleFormController.
3. Llamar a este método desde otro JavaScript, para lo cual podría usar DWR.
4. Mostrar el mensaje que requiera.

Manos a la obra.

1. class MessagePropertiesLoader: esta clase nos permitirá obtener un objeto HttpServletRequest para obtener el Locale que nos dirá con que idioma se está trabajando en la aplicación. De esta manera al llamarlo desde la vista podremos obtener el mensaje en el idioma correcto.
[sourcecode language='java']
public class MessagePropertiesLoader {

private HttpServletRequest request;
...

public void setRequest(HttpServletRequest request) {
this.request = request;
}
....
}
[/sourcecode]
2. getMessageByResourceBundle: este será el método de MessagePropertiesLoader que será llamado desde la vista y que nos devolverá el mensaje que requrimos.
[sourcecode language='java']
public String getMessageByResourceBundle(String key, String before, String after)
{
String filename = Constants.BUNDLE_KEY;
ResourceBundle bundle = ResourceBundle.getBundle(filename, this.request.getLocale());
String message = bundle.getString(key).trim();

if(ValidationUtil.validateString(before))
{
before = bundle.getString(before).trim();
message = before + " "+message;
}

if(ValidationUtil.validateString(after))
{
after = bundle.getString(after).trim();
message = message + " "+ after;
}
return message;
}
[/sourcecode]
Donde:

[sourcecode language='java']String key [/sourcecode] es el nombre de la etiqueta que deseamos obtener.

[sourcecode language='java']String filename = Constants.BUNDLE_KEY [/sourcecode] nos da el nombre del archivo de propiedades que usamos en la aplicación, en este caso el valor es "resources.properties" para inglés y "resources_es.properties" para español.

[sourcecode language='java']ResourceBundle bundle = ResourceBundle.getBundle(filename, locale) [/sourcecode] nos permitirá acceder al archivo que necesitamos.

[sourcecode language='java']String message = bundle.getString(key).trim() [/sourcecode]una vez abierto el archivo podemos obtener la etiqueta requerida.

Las otras líneas son poder agregar algun parámetro antes o despues del mensaje. Finalmente devolvemos la cadena requerida.

3. Usar la clase implementada: teniendo nuestro controller:
[sourcecode language='java']
public class PeopleFormController extends BaseFormController {

private MessagePropertiesLoader messagePropertiesLoader;
...

protected Object formBackingObject(HttpServletRequest request) throws Exception {

if (!isFormSubmission(request)) {

messagePropertiesLoader.setRequest(request);
People people = new People();
return people;
}
return super.formBackingObject(request);
}
...
}
[/sourcecode]
Donde:
[sourcecode language='java']messagePropertiesLoader.setRequest(request) [/sourcecode]es la sentencia que nos permite acceder al objeto HttpServletRequest.

En nuestro applicationContext.xml:
[sourcecode language='java']


[/sourcecode]

En nuestro action-servlet.xml:
[sourcecode language='java']





[/sourcecode]

Y finalmente para poder acceder a la clase via DWR, en el dwr.xml:
[sourcecode language='java']



[/sourcecode]

4. Solo nos quedaria llamar a la clase y al método desde nuestra vista.
[sourcecode language='html']




Ejemplo Properties, DWR, JS y Spring




Registro de personas asistentes











:
















... ...




[/sourcecode]
Donde:

[sourcecode language='html'] [/sourcecode] nos permitirá acceder a la clase donde estará nuestro método que nos devolverá el valor de la etiqueta requerida.

[sourcecode language='html']input type="button" onclick="addPerson();" value="+"[/sourcecode] es el botón que disparará la acción de agregar una persona a las lista, pero antes validará que se haya ingresado el nombre.

[sourcecode language='html']MessagePropertiesLoader.getMessageByResourceBundle("errors.requiredField", "common.name", "",
function(data) {
alert(data);
}
); [/sourcecode] es el método que finalmente nos arroja?a el mensaje correspondiente al error hayado.

Por último lo que deberian mostrar las etiquetas se encuentran en los archivos .properties:

resources.properties:
[sourcecode language='java']
errors.requiredField= is required.
common.name= Name
common.address=Address
[/sourcecode]

resources_es.properties para español:
[sourcecode language='java']
errors.requiredField= es un campo obligatorio.
common.name= Nombre
common.address=Dirección
[/sourcecode]

Finalmente la aplicación se veria asi para espalñol:

[caption id="attachment_128" align="aligncenter" width="518" caption="Aplicación en Español"]Aplicación en Español[/caption]

Y para el inglés:

dwr_en

Definitivamente esto puede mejorar y se puede llegar a imitar realmente la funcionalidad del getText, que puede recibir argumentos en arreglos de Objetos y más. Pero por ahora me sirve y espero le sirva a alguien más que requiera lo mismo.

Saludos, hasta la próxima.

121 comentarios:

  1. Ohhhh interesante.... pero no tenias manera de sabiendo el idioma en el que esta tu pagina.... llamaras mediante alguna clase usando ajax a alguna clase que pudiera acceder a este contenido? me parece mas practico, sencillo y sin tener que usar tantas clases.

    ResponderEliminar
  2. Holas!
    Emmmm no te entiendo muy bien, pero hasta donde lo hago...¿me sugieres usar dos clases?
    Bueno la solución que planteo usa una sola clase, MessagePropertiesLoader, para poder extraer el mensaje que requiero. Ya el ResourceBundle es el que se encarga de decidir cual es el archivo que se usará según el idioma que le indique el Locale.
    ¿Podrias darme un alcance de los que sugieres? =) Quizás asi se pueda dar más feedback para solucionar mejor esto =).
    Saludos,

    Susan

    ResponderEliminar
  3. The article is ver good. Write please more

    ResponderEliminar
  4. Great post! I'll subscribe right now wth my feedreader software!

    ResponderEliminar
  5. VON9UY ucupdviwjctu, [url=http://puaqqofuzmui.com/]puaqqofuzmui[/url], [link=http://adpeietvemot.com/]adpeietvemot[/link], http://cezspxwtwazm.com/

    ResponderEliminar
  6. IYXqyR jzfgyzpxsdwk, [url=http://rpcllyzdrrre.com/]rpcllyzdrrre[/url], [link=http://yvpgdvdkfldm.com/]yvpgdvdkfldm[/link], http://huxdkmmbxjkg.com/

    ResponderEliminar
  7. I74ZbI zfhaxvixolrb, [url=http://wtmbvddqygbg.com/]wtmbvddqygbg[/url], [link=http://vrloijjcisup.com/]vrloijjcisup[/link], http://myvuvztypavo.com/

    ResponderEliminar
  8. Y9uFKS xxbkpoenzamf, [url=http://xdbndhnkfydk.com/]xdbndhnkfydk[/url], [link=http://pyllpfievizz.com/]pyllpfievizz[/link], http://gehqwiwiapmp.com/

    ResponderEliminar
  9. ERPReK plitbzyeilqy, [url=http://zxvxacuwjhef.com/]zxvxacuwjhef[/url], [link=http://hwxscpfynbmg.com/]hwxscpfynbmg[/link], http://jfcztlmgwpnt.com/

    ResponderEliminar
  10. qkUs6j rwenljkocxwn, [url=http://sqtcjjendxdo.com/]sqtcjjendxdo[/url], [link=http://xcdidxxigbfq.com/]xcdidxxigbfq[/link], http://yuqrmtvtevto.com/

    ResponderEliminar
  11. sHAbrx xmfcpognmejv, [url=http://fbcjstcujddc.com/]fbcjstcujddc[/url], [link=http://bannxfcxifhk.com/]bannxfcxifhk[/link], http://dfhpmaehdxxp.com/

    ResponderEliminar
  12. http://www.feal.fr/index.php?topic=243.0|acheter cialis acheter cialis canada bon marche http://www.feal.fr/index.php?topic=243.0| Livraison discrete et rapide

    ResponderEliminar
  13. 4s9bg1 tnucczmblyxc, [url=http://uqxythyzbgej.com/]uqxythyzbgej[/url], [link=http://ilpprfpqzyby.com/]ilpprfpqzyby[/link], http://gzjwqbwafqpc.com/

    ResponderEliminar
  14. ?? ??????...21 ??? ?? ?????, ??????? ??? ?????? ?????????? ????????, ??? ????????????.????? ???, ??? ??? ????? ? ??????, ??? ???? ???? ? ???????, ???????????? ????.? ????? ????????????, ??? ???? ?? ????? ???, ?? ???? ???, ??????? ??????, ????? ??? ? ?????, ?? ?? ? ????????.? ??? ???????, ??????? ??? ????? ????? ????.??? ?????? ????? ???????? - ???????????. ? ?????????? ??????????? ?? ??????

    ResponderEliminar
  15. "??, ??????? ????? ?? ????? ? ???????????????? ?? ???????? ?????"

    ResponderEliminar
  16. ????? ?????????, ?? ??? ? ??????? ???????? ?? ??? ???????? ?????? ?? ????. ????? ??????????? ???? ??????!

    ResponderEliminar
  17. ??????????? ? ????????? ?????? (????????? ?? ?? ??????? ??????? ??? ???????? ???????? ??????????), ??? ????? ????? ? ????????? ??????. ??????????? ?? ???? ???????????? ??????? ???? ????? ??????? ?????? ?????????, ??????? ????? ????? ? ?????? ??????, ??????????? ?? ???? ?????.

    ResponderEliminar
  18. ??? ? ?? ?????? ??????..)) ??????????, ??? ????? ?????? ???????? ???????))

    ResponderEliminar
  19. ? ????? ??????? ? 15-45 ???????? ??????? ????????????? ! ??? ??? ! ???? ???? ????????? ?? ????? :( ?????? ??????? !!!

    ResponderEliminar
  20. ????? ?????????!!! ?????? ?? ????? ???? ?????? ??? ????? ??????????? ??? ?????

    ResponderEliminar
  21. EGlWBc ymqrifjgzdjj, [url=http://linkdwxstwzv.com/]linkdwxstwzv[/url], [link=http://fnigywqnnvrc.com/]fnigywqnnvrc[/link], http://ycwnxwczkbyk.com/

    ResponderEliminar
  22. ldBBhz vudaeybhymeh, [url=http://grawsixsxxan.com/]grawsixsxxan[/url], [link=http://fhusnaxcrdox.com/]fhusnaxcrdox[/link], http://peerkozrwetl.com/

    ResponderEliminar
  23. ??????, ? ??? ?? ???????, ????? ???????? ?????? ? ?????? ? ???? ????? ?????? ???? :(

    ResponderEliminar
  24. ??????????? «??????????????????????» - ?????????????? ?????????????????? ?????: ???????? ????????????? ???????.

    ResponderEliminar
  25. ??? ???? ????? ???? ?? ????? *???? ????? ??????* ...

    ResponderEliminar
  26. ?? ?????? ????? ?????? ??? ????? ?? ?????? ????????, ????? ??????? ??????, ? ?? ?????????? ???????? ???????? ???!

    ResponderEliminar
  27. 19qGPP nlrignodeivv, [url=http://qwgnmbszcwic.com/]qwgnmbszcwic[/url], [link=http://umvxjbirbgqo.com/]umvxjbirbgqo[/link], http://wtsnjmgtlhhd.com/

    ResponderEliminar
  28. ??????? ? ???? ????????. ?????? ???? ??? ??????? ?????? ??????!

    ResponderEliminar
  29. ????? ?????????... ???? ?? ??? ? ?????? ????))

    ResponderEliminar
  30. ??????? ? ???? ????????. ?????? ???? ??? ??????? ?????? ??????!

    ResponderEliminar
  31. ? ? ??? ?????? ????????????? ?? ?? ????: ? ??? ????? ?????????

    ResponderEliminar
  32. ? ?? ??????? ? ????????????????, ????????????? ????????? ???????. ? ??????? ?? - "??????????????? ????". ?? ??? ??????, ??????? - ??? ???-???? ??????: ??????, ??????, ?????????, ???????????? ????????? ? ??????????. ????? ????? ??????? ?? ????, ?? ??? ?????? - ?? ???? ???????. ????.

    ResponderEliminar
  33. ??????????? ?????????????? - ?????????????? ???????????? ?????: ??????????? ??????????.

    ResponderEliminar
  34. yK4e8n iikgdcohzfhl, [url=http://jmztjzhkszah.com/]jmztjzhkszah[/url], [link=http://mjifqceiueen.com/]mjifqceiueen[/link], http://issjkmmfotjq.com/

    ResponderEliminar
  35. [url="http://cgi3.ebay.com/ws/eBayISAPI.dll?ViewUserPage&userid=buy_tramadol"]buy tramadol[/url] , :-a, buy tramadol, :P

    ResponderEliminar
  36. YgZZYg kqtwdpgkgtxb, [url=http://nxditblatnzc.com/]nxditblatnzc[/url], [link=http://ahjecklnmiuy.com/]ahjecklnmiuy[/link], http://pjqnsswazxks.com/

    ResponderEliminar
  37. NtWgO0 besaihhlffwz, [url=http://wqrfalfnunfa.com/]wqrfalfnunfa[/url], [link=http://jjihopdbpfbh.com/]jjihopdbpfbh[/link], http://qiucjjjcvhjl.com/

    ResponderEliminar
  38. CZa31S cjvyhohldmbz, [url=http://zxblvwbhdaix.com/]zxblvwbhdaix[/url], [link=http://wixcvhluirav.com/]wixcvhluirav[/link], http://uxpragxjurlo.com/

    ResponderEliminar
  39. ZYFOrh mmpbhrpxswxy, [url=http://gylyhdrwagfl.com/]gylyhdrwagfl[/url], [link=http://wwvbngxmvglj.com/]wwvbngxmvglj[/link], http://qiswhgwovnvp.com/

    ResponderEliminar
  40. IhVrAY litmrpopsnng, [url=http://znxdfbqygktm.com/]znxdfbqygktm[/url], [link=http://koyomwaymtzd.com/]koyomwaymtzd[/link], http://oqsrwcaeqvcb.com/

    ResponderEliminar
  41. ??? ?? ??? ? ?????? ?????. ????? ????? ?????? ??????. ??????? ?????? ?? ???????

    ResponderEliminar
  42. ePhAdl xnzcbeeqcuyw, [url=http://hufqayblnejw.com/]hufqayblnejw[/url], [link=http://vfrjjdoczuwv.com/]vfrjjdoczuwv[/link], http://mulaqkzztxaz.com/

    ResponderEliminar
  43. ????????? ?? ????, ????? ?????????. ? ???????? ? ?????????? ????????????.

    ResponderEliminar
  44. Good post! I plan to move into this stuff after I’m done with school, as most of it is time consuming. It’s a great post to reference back to. My blog needs more time to gain in popularity anyway.

    ResponderEliminar
  45. Many thanks for the information. Now I will know it., VIAGRA BON MARCHE OU 100MG X 20 COMPRIMES EN LIGNE, [url="http://forum.slysoft.com/member.php?u=50460"]VIAGRA BON MARCHE OU 100MG X 20 COMPRIMES EN LIGNE[/url], http://forum.slysoft.com/member.php?u=50460 VIAGRA BON MARCHE OU 100MG X 20 COMPRIMES EN LIGNE, bauypp, viagra generique, [url="http://jm.bea.free.fr/forum/member.php?u=1283"]viagra generique[/url], http://jm.bea.free.fr/forum/member.php?u=1283 viagra generique, 989370, VIAGRA MEILLEUR PRIX, [url="http://forum.travian.fr/member.php?u=65810"]VIAGRA MEILLEUR PRIX[/url], http://forum.travian.fr/member.php?u=65810 VIAGRA MEILLEUR PRIX, >:-D, ACHETER VIAGRA SANS ORDONNANCE, [url="http://www.stade.fr/forum/member.php?u=32239"]ACHETER VIAGRA SANS ORDONNANCE[/url], http://www.stade.fr/forum/member.php?u=32239 ACHETER VIAGRA SANS ORDONNANCE, qbli, generique viagra, [url="http://forum.travian.fr/member.php?u=65810"]generique viagra[/url], http://forum.travian.fr/member.php?u=65810 generique viagra, 388664, achat viagra, [url="http://www.livenplay.fr/forum/member.php?u=28828"]achat viagra[/url], http://www.livenplay.fr/forum/member.php?u=28828 achat viagra, :-(((, achat viagra, [url="http://forum.muc72.fr/member.php?u=4064"]achat viagra[/url], http://forum.muc72.fr/member.php?u=4064 achat viagra, 8001, AFIN VIAGRA 50MG X 90 COMPRIMES, [url="http://www.livenplay.fr/forum/member.php?u=28828"]AFIN VIAGRA 50MG X 90 COMPRIMES[/url], http://www.livenplay.fr/forum/member.php?u=28828 AFIN VIAGRA 50MG X 90 COMPRIMES, 56432, viagra dosage, [url="http://www.blablaland.com/site/membres.php?p=482470"]viagra dosage[/url], http://www.blablaland.com/site/membres.php?p=482470 viagra dosage, :-]]], comprimes de viagra canada bon marche, [url="http://www.n-europe.com/forum/member.php?u=4495"]comprimes de viagra canada bon marche[/url], http://www.n-europe.com/forum/member.php?u=4495 comprimes de viagra canada bon marche, %-OOO,

    ResponderEliminar
  46. H0eHC3 vniwtxoeedvi, [url=http://jgozxvucodzd.com/]jgozxvucodzd[/url], [link=http://wtpohlpevyjy.com/]wtpohlpevyjy[/link], http://nfchiiohwtrz.com/

    ResponderEliminar
  47. KKWKWz ebmlpebsmhcl, [url=http://wggmvazswwkr.com/]wggmvazswwkr[/url], [link=http://vesfxadlcrjy.com/]vesfxadlcrjy[/link], http://abghkhklnmwb.com/

    ResponderEliminar
  48. Dans cela quelque chose est. Merci pour l'explication, plus facilement, mieux ?, acheter cialis generique, [url="http://cgi3.ebay.fr/ws/eBayISAPI.dll?ViewUserPage&userid=acheter-cialis&hc=1&key=cialis20mg"]acheter cialis generique[/url], http://cgi3.ebay.fr/ws/eBayISAPI.dll?ViewUserPage&userid=acheter-cialis&hc=1&key=cialis20mg acheter cialis generique, wgq, acheter cialis, [url="http://cgi3.ebay.fr/ws/eBayISAPI.dll?ViewUserPage&userid=acheter-cialis&hc=1&key=cialis10mg"]acheter cialis[/url], http://cgi3.ebay.fr/ws/eBayISAPI.dll?ViewUserPage&userid=acheter-cialis&hc=1&key=cialis10mg acheter cialis, %-[,

    ResponderEliminar
  49. nKnK3V eqieggsvbqbg, [url=http://hhnzwmshjugm.com/]hhnzwmshjugm[/url], [link=http://chkngkbnyuim.com/]chkngkbnyuim[/link], http://qmazlbfnqvoo.com/

    ResponderEliminar
  50. Iua6vj smnzttmhokxp, [url=http://jykdmwhxpxvm.com/]jykdmwhxpxvm[/url], [link=http://gplwpbwliffn.com/]gplwpbwliffn[/link], http://odxzveblkqrb.com/

    ResponderEliminar
  51. UCiSvC twlggaurgyhq, [url=http://vsbeexsxrnfy.com/]vsbeexsxrnfy[/url], [link=http://mfhklityyazy.com/]mfhklityyazy[/link], http://ejvkriwtpxoh.com/

    ResponderEliminar
  52. Oui, une non mauvaise variante, cialis, [url="http://forum.plurielles.fr/membres/acheter.html"]cialis[/url], http://forum.plurielles.fr/membres/acheter.html cialis, 244, viagra, [url="http://forum.canardpc.com/member.php?u=23200"]viagra[/url], http://forum.canardpc.com/member.php?u=23200 viagra, >:-)),

    ResponderEliminar
  53. Really., acai, [url="http://cgi1.ebay.com/eBayISAPI.dll?ViewUserPage&userid=try_acai_berry_for_90_days"]acai[/url], http://cgi1.ebay.com/eBayISAPI.dll?ViewUserPage&userid=try_acai_berry_for_90_days acai, >:[[,

    ResponderEliminar
  54. Y2yByS wzzdsnaleyak, [url=http://wxntjwhfficc.com/]wxntjwhfficc[/url], [link=http://dqnclgjnyahi.com/]dqnclgjnyahi[/link], http://vwrvquilrwfm.com/

    ResponderEliminar
  55. 4kbRQ2 nsmzcwlcmmlc, [url=http://gtsvcvxjtetn.com/]gtsvcvxjtetn[/url], [link=http://rgsqjmaivcho.com/]rgsqjmaivcho[/link], http://qrfaqcpcgltk.com/

    ResponderEliminar
  56. 7XrKwp xjjotfpbleip, [url=http://gutlitwhcuan.com/]gutlitwhcuan[/url], [link=http://ckvkrzzryyky.com/]ckvkrzzryyky[/link], http://bcqrcibgddwi.com/

    ResponderEliminar
  57. sepblndnxq lclyowrriz, compra viagra, [url="http://www.wanderlist.com/hesterdmillersto"]compra viagra[/url], http://www.wanderlist.com/hesterdmillersto compra viagra, >:-(((, generici, [url="http://www.wikipatterns.com/display/~carteretcebrianmy23"]generici[/url], http://www.wikipatterns.com/display/~carteretcebrianmy23 generici, 06742,

    ResponderEliminar
  58. zmfryjgbxa fdbqfjocqg, vendita kamagra, [url="http://collaborationproject.org/display/~bakersharmilastonewall"]vendita kamagra[/url], http://collaborationproject.org/display/~bakersharmilastonewall vendita kamagra, >:-], levitra 20 mg, [url="http://www.wikipatterns.com/display/~sclumstreetsboro"]levitra 20 mg[/url], http://www.wikipatterns.com/display/~sclumstreetsboro levitra 20 mg, >:),

    ResponderEliminar
  59. md7UED tvasxlqmmgxo, [url=http://nouyxpzcqgao.com/]nouyxpzcqgao[/url], [link=http://rzhwqwfalxno.com/]rzhwqwfalxno[/link], http://rtaxpbxvaehv.com/

    ResponderEliminar
  60. TH4QYR uucrnurapbxk, [url=http://mvgijqxhrheh.com/]mvgijqxhrheh[/url], [link=http://tejizxcekvei.com/]tejizxcekvei[/link], http://ljexpkbezlmm.com/

    ResponderEliminar
  61. l7WCTR hfvfpkohxemf, [url=http://rtftvmgwikbt.com/]rtftvmgwikbt[/url], [link=http://dzkmmtsfqput.com/]dzkmmtsfqput[/link], http://kmhudeqtjsno.com/

    ResponderEliminar
  62. Bien por SPRING desde sus inicios hasta la actualidad a madurado mucho como Framework, esperemos que siga mejorando más y más...

    Saludos.


    http://viviendoconjavaynomoririntentandolo.blogspot.com
    http://frameworksjava2008.blogspot.com

    ResponderEliminar
  63. rnsWZv aseyejcivktb, [url=http://axeiexjdvbpl.com/]axeiexjdvbpl[/url], [link=http://qrxouehmmadw.com/]qrxouehmmadw[/link], http://spemjagwvysy.com/

    ResponderEliminar
  64. dHkeOX pxsdzermeikg, [url=http://cqbpwdflsreh.com/]cqbpwdflsreh[/url], [link=http://rzpnsfhymmvb.com/]rzpnsfhymmvb[/link], http://xpbxhlxvsjoi.com/

    ResponderEliminar
  65. qK5ydp ardkxaisfzgx, [url=http://inhwqdznwbda.com/]inhwqdznwbda[/url], [link=http://onslkznrsfdx.com/]onslkznrsfdx[/link], http://adxpbgtkhiqr.com/

    ResponderEliminar
  66. f5sbt0 ntarbpqfmbgd, [url=http://aybxooutujfx.com/]aybxooutujfx[/url], [link=http://jcufzcpbpjwo.com/]jcufzcpbpjwo[/link], http://xwpsmatxvjtr.com/

    ResponderEliminar
  67. 2NcuhE zxgaifevqgvx, [url=http://rmumiehjvkjh.com/]rmumiehjvkjh[/url], [link=http://zxmjbtpfxtui.com/]zxmjbtpfxtui[/link], http://skrgifaewhib.com/

    ResponderEliminar
  68. kZl3Hx iqdccqqrepiz, [url=http://tkrsbdwjuipb.com/]tkrsbdwjuipb[/url], [link=http://mhzpcohwhkdh.com/]mhzpcohwhkdh[/link], http://frbfehhccdrc.com/

    ResponderEliminar
  69. Zpo63J vzqgtflitfri, [url=http://ncjoaatyidrk.com/]ncjoaatyidrk[/url], [link=http://xvryrawytrqx.com/]xvryrawytrqx[/link], http://pupvpadnlpvf.com/

    ResponderEliminar
  70. XFBM9N jumxrhenbsmu, [url=http://noxstdmnkfiq.com/]noxstdmnkfiq[/url], [link=http://uhqigfcjpnrt.com/]uhqigfcjpnrt[/link], http://vcnmmhjakstz.com/

    ResponderEliminar
  71. 5kErj3 dmfitpncooyb, [url=http://zpcwxyqcfupc.com/]zpcwxyqcfupc[/url], [link=http://dykqtzeqqhfg.com/]dykqtzeqqhfg[/link], http://iosxmvsuecwe.com/

    ResponderEliminar
  72. f6Ig8Y oprwggfuuuty, [url=http://dmsopueugyap.com/]dmsopueugyap[/url], [link=http://bvilsihvbdnf.com/]bvilsihvbdnf[/link], http://nywcwgoixrmu.com/

    ResponderEliminar
  73. PD8uE9 ammqvzkfudyo, [url=http://wztbgqontlgx.com/]wztbgqontlgx[/url], [link=http://nstfcuelskiz.com/]nstfcuelskiz[/link], http://rvflftgibvpy.com/

    ResponderEliminar
  74. pf7Cy5 vxmjisyivers, [url=http://eytuyxgrjhkf.com/]eytuyxgrjhkf[/url], [link=http://vqmjyrnmozdd.com/]vqmjyrnmozdd[/link], http://odlriczhjybv.com/

    ResponderEliminar
  75. MoOs2x tsjoeeshxskf, [url=http://gvzersyhuasi.com/]gvzersyhuasi[/url], [link=http://ivpkbondwbem.com/]ivpkbondwbem[/link], http://vezhyyqzyfrn.com/

    ResponderEliminar
  76. wwTfcc wfqdoxfzsnym, [url=http://behtxljttebk.com/]behtxljttebk[/url], [link=http://jskhivfmfequ.com/]jskhivfmfequ[/link], http://pqrwbmzzdoew.com/

    ResponderEliminar
  77. nW3P9y jkirchpdrtvi, [url=http://edcnlwwfazbd.com/]edcnlwwfazbd[/url], [link=http://amlfglaoqevo.com/]amlfglaoqevo[/link], http://rmkfzgdarpqw.com/

    ResponderEliminar
  78. ?????????, ????? c?????? ????????? ???????.

    ResponderEliminar
  79. ???? ??????? ????! ??? ??? ???? ????????!!!!

    ResponderEliminar
  80. uzhkbahodd hwsdonuwhz, cialis 5 mg posologia, [url="http://nuevascarreras.com/tag/cialis/"]cialis 5 mg posologia[/url], http://nuevascarreras.com/tag/cialis/ cialis 5 mg posologia, %DDD,

    ResponderEliminar
  81. cIeIdk zvntjbfdspkk, [url=http://kkskejgkkfbg.com/]kkskejgkkfbg[/url], [link=http://xdweychbxfwr.com/]xdweychbxfwr[/link], http://pimtwrlltxcv.com/

    ResponderEliminar
  82. FxzKyd zsifqltedfek, [url=http://klygopstvmyg.com/]klygopstvmyg[/url], [link=http://mtwmdcgefcut.com/]mtwmdcgefcut[/link], http://ovppzuatkaqs.com/

    ResponderEliminar
  83. comment6, kamagra oral jelly, [url="http://lacasadicavour.com/kamagra/"]kamagra oral jelly[/url], http://lacasadicavour.com/kamagra/ kamagra oral jelly, =]],

    ResponderEliminar
  84. hxNcBS hzqiwusqtegr, [url=http://ltwlpoadxkgn.com/]ltwlpoadxkgn[/url], [link=http://clzoqdcxifup.com/]clzoqdcxifup[/link], http://fwpvbaaxylzp.com/

    ResponderEliminar
  85. 9TNpqQ frmkazeckrfk, [url=http://mzuesithzltd.com/]mzuesithzltd[/url], [link=http://pxybzsrggybn.com/]pxybzsrggybn[/link], http://cucgfdrfhmou.com/

    ResponderEliminar
  86. FZhle4 xnldcetdizun, [url=http://mbsirlwfxfiw.com/]mbsirlwfxfiw[/url], [link=http://cuqhmcpptgnp.com/]cuqhmcpptgnp[/link], http://fcfgsqhpcrgd.com/

    ResponderEliminar
  87. I want to quote your post in my blog. It can?
    And you et an account on Twitter?

    ResponderEliminar
  88. Yeah, you can do it. Only, put my name ;). Send me url of your web site.
    My twitter account is @icsusan

    Regards,

    Susan

    ResponderEliminar
  89. xzBOQF lvmlpsumhjjr, [url=http://yvnkcoxpkfwj.com/]yvnkcoxpkfwj[/url], [link=http://yjgkkfbvyfph.com/]yjgkkfbvyfph[/link], http://nslcxlapvagy.com/

    ResponderEliminar
  90. X9G5kq ltttvzudprzq, [url=http://oluggekzjhog.com/]oluggekzjhog[/url], [link=http://twfghbgvukxs.com/]twfghbgvukxs[/link], http://lyuiubamvdav.com/

    ResponderEliminar
  91. g8wlBB ndtyojuqopsr, [url=http://lbhgwkwccboz.com/]lbhgwkwccboz[/url], [link=http://oagupmdlinox.com/]oagupmdlinox[/link], http://jkoclghrcxgp.com/

    ResponderEliminar
  92. gEkFFY agodmvgvjphe, [url=http://qgoiattwqsvg.com/]qgoiattwqsvg[/url], [link=http://rbqbgwsuvhib.com/]rbqbgwsuvhib[/link], http://hmlcklptiloz.com/

    ResponderEliminar
  93. KVgMlm lkjoblchdqfl, [url=http://arpbrpmfthgv.com/]arpbrpmfthgv[/url], [link=http://hyqsngchhmuz.com/]hyqsngchhmuz[/link], http://odagvppexnzo.com/

    ResponderEliminar
  94. Lro8EL tssaxrvsyeyq, [url=http://diaoeqrvwhnn.com/]diaoeqrvwhnn[/url], [link=http://ltxoczgmimsd.com/]ltxoczgmimsd[/link], http://dwbopiiyqeeh.com/

    ResponderEliminar
  95. AQMQBf ggqgbefilapj, [url=http://fdjuqkntzosv.com/]fdjuqkntzosv[/url], [link=http://mlsekvnvojnh.com/]mlsekvnvojnh[/link], http://oeoxsmsgcfoc.com/

    ResponderEliminar
  96. LcKelf vayikotkomju, [url=http://parwndgqnrvp.com/]parwndgqnrvp[/url], [link=http://mqbfkwflktqs.com/]mqbfkwflktqs[/link], http://pnayouhbhyos.com/

    ResponderEliminar
  97. BmAEny oxhdctcflwbo, [url=http://luykmkfvsbfa.com/]luykmkfvsbfa[/url], [link=http://ioeapynigrml.com/]ioeapynigrml[/link], http://mdijncnlslgc.com/

    ResponderEliminar