Aplicación web Struts: Validación reutilizable del lado del cliente y del lado del servidor

Nuestra aplicación Struts duplica una gran cantidad de comprobaciones de validación de formularios: (1) del lado del cliente en jQuery / JS, y (2) por separado, del lado del servidor en Java.

Le pregunté por qué, y él dijo “nunca se puede confiar en el lado del cliente”. Pero, por otro lado, para su comodidad, también quiere proporcionar validación de JS / jQuery en el navegador.

Hay un montón de código redundante. ¿Cuál es la estrategia correcta para tener validación reutilizable en ambos lados? ¿Las personas duplican manualmente la validación del lado del cliente / servidor en estos días?

  • La validación del lado del servidor es obligatoria : la solicitud puede provenir de una página web modificada, por ejemplo, con reglas alteradas con FireBug o cualquier tipo de DevTools. O incluso más fácil, la solicitud puede ser elaborada por un usuario malintencionado, procedente de una página (o un bloque de JavaScript, o bien) creada ad-hoc , omitiendo por completo su página.

Piense en ello como la puerta de su casa: con ella, nadie que no tenga la llave correcta puede ingresar. Sin él, cualquiera puede ingresar.

  • La validación del lado del cliente es fácil de usar y amigable para el usuario: evita que el usuario espere la respuesta negativa del servidor, evita que la red se inunde con solicitudes incorrectas que podrían haberse detenido (dada la cantidad de usuarios y la posibilidad de cargar archivos junto con los datos del formulario, esto podría alcanzar una masa crítica muy pronto).

Piense en ello como la puerta con el intercomunicador fuera del edificio. Con eso, si no respondes al intercomunicador, la gente se va inmediatamente. Sin él, la gente necesita ingresar al edificio, subir las escaleras, llamar a tu puerta … solo para descubrir que no estás en casa.

NECESITA aplicar una validación del lado del servidor, que en el caso de Struts2 sea validate() o validateXXX() el métodoXXX validateXXX() , XML Validation o usar anotaciones (con las Anotaciones por acción de Struts2 incorporadas, o con el jsr303 -validator-plugin por @UmeshAwasthi por entidad).

Si desea reutilizar su validación del lado del servidor como validación del lado del cliente, puede usar Struts2-jQuery-plugin como se describe en esta respuesta .

Por cierto, HTML5 (con errores) y una validación jQuery básica en el lado del cliente debería ser suficiente.

Ponga el verdadero esfuerzo en el lado del servidor, luego, si todavía tiene tiempo y presupuesto, mejore el lado del cliente.