Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

97
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!