Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

100
Vistas
Escuchar eventos de formulario de Apache Tapestry

Soy un desarrollador de back-end y recientemente heredé un par de sistemas Apache Tapestry heredados. Mis habilidades con Tapestry son nulas, mi conocimiento en el medio javascript.

Quiero deshabilitar un botón de envío justo antes de que se realice el envío para evitar envíos múltiples. un muy simple

 $(document).ready(function () { $("#form").submit(function () { $("#submitbutton").attr("disabled", true); return true; }); });

El enfoque no funcionará porque el evento de envío se propaga antes de que Tapestry realice la validación del lado del cliente, por lo que podría estar deshabilitando el botón en un intento de envío que fallará la validación.

Sobre esta pregunta, aprendí que Tapestry también propaga sus propios eventos, y si pudiera escuchar tapestry:formprocesssubmit Eso probablemente resolvería mi problema.

Tengo mi archivo CreateContract.tml con el formulario, campos y botones que ya funcionan, tengo mi archivo CreateContract.java con

 @Import(library = { "context:js/jquery.mask.min.js", "context:js/maintain-contracts.js", "context:js/zone-overlay.js"}, stylesheet = "context:layout/zone-overlay.css")

Y mi archivo maintain-contracts.js con

 $(document).ready(function () { $("#form").on('tapestry:formprepareforsubmit', function () { console.log("I want to arrive here!"); }); });

Pero no funciona. En este hilo de la lista de correo, veo personas discutiendo asuntos muy similares, pero escuchan los eventos de una manera diferente, que no entiendo del todo.

¿Debo crear el oyente dentro del inicializador?

Me refiero al evento como 'tapestry:formprepareforsubmit' en lugar de Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT porque tanto en mi sustain maintain-contracts.js como en mi consola, la variable Tapestry está vacía. ¿Por qué?

¿Qué pasa con la tricotomía .bind .on .observe ?

La pregunta de los primeros enlaces se resolvió usando ProptypeJS Class.create, pero creo que no tengo acceso a eso.

¿Estoy haciendo eso mal?

Gracias, cualquier ayuda es apreciada.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No es un análisis de por qué su enfoque no funciona, pero no obstante, es una referencia útil:

Geoff Callender, creador de Tapestry JumpStart , tiene una excelente descripción de cómo se pueden evitar los envíos de formularios duplicados usando un mixin.

Consulte http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/creatingmixins1

about 4 years ago · Juan Pablo Isaza Denunciar

0

Después de leer el código fuente de Tapestry, descubrí que el evento no se llama tapestry:formprepareforsubmit , sino t5:form:prepare-for-submit , aunque no encontré documentación al respecto en ninguna parte.

Asi que

 $(document).ready(function () { $("#form").on('t5:form:prepare-for-submit', function () { console.log("I want to arrive here!"); }); });

Funciona perfectamente.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda