2008-10-16 10 views
6

Heredé esta gigantesca aplicación web heredada de Java utilizando Struts 1.2.4. Tengo una pregunta específica sobre ActionForms. Algunos de ellos solo tienen propiedades de Cadena (incluso para números), algunos de ellos usan los tipos aparentemente apropiados (Entero, Fecha, Cadena, etc.). ¿Cuál es la mejor práctica aquí?¿Qué tipo debe tener Struts ActionForm?

Además, parece que si una propiedad es del tipo Entero, y el valor que el usuario ingresó no es un valor entero, Struts lo traga silenciosamente y simplemente no establece la propiedad. ¿Qué pasa con esto?

Respuesta

5

Para Struts 1.2x, propiedades donde el usuario ingresa o selecciona valores en el formulario HTML y que se rellenan automáticamente en la instancia de ActionForm por Struts Las etiquetas HTML deben ser cadenas o booleanos. Sin embargo, no hay ninguna razón por la cual ActionForm no tenga métodos getter que devuelvan las propiedades como tipos más significativos para su aplicación, p. Fecha.

3

Si quiere hacer alguna validación usted mismo (o use las características del validador de puntales que se han refactorizado a partir de puntales posteriores a 1.2) necesitará propiedades de cadena exactamente por la razón que cita: Una vez que almacena valores numéricos en Valores enteros o int, deben ser números o "nada en absoluto"; de lo contrario, ¿cómo se almacenó "mucho" (literalmente) en una propiedad Entero?

La validación del lado del cliente (por ejemplo, en Javascript) seguiría funcionando, pero no desea confiar en esto.

Si, al ingresar un número inválido, está de acuerdo con que al usuario se le presente un campo en blanco, puede almacenar valores en Fecha-, Entero-, Cualquiera-Propiedades. Si desea presentar el valor original con el mensaje de error, necesitará la propiedad Cadena.

Esto tiene el precio que necesita para realizar la conversión manualmente. Como Struts 1.2 es bastante viejo, es posible que desee pensar en reemplazar gradualmente su infraestructura de aplicaciones con tecnología más moderna y operar con dos tecnologías (la antigua & la nueva) al mismo tiempo por un tiempo hasta que la parte anterior sea lo suficientemente pequeña (o no importante) suficiente) para ser descartado.

nb - también obtiene más control sobre los valores que desea aceptar como números. Todavía recuerdo una vieja aplicación bancaria de tarjetas de crédito de Struts en la que le pregunté a mi gerente cuál es el resultado esperado cuando desea retirar 3e2 euros de su tarjeta. No dijeron 300 (como se convirtió Struts), pero optaron por un error.

Cuestiones relacionadas