Pregunta

Heredé esta gigantesca aplicación web heredada de Java usando Struts 1.2.4. Tengo una pregunta específica con respecto a 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í?

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

¿Fue útil?

Solución

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

Otros consejos

Si desea hacer una validación usted mismo (o usar las funciones de validación de struts que se han refactorizado a partir de struts más tarde que 1.2), necesitará las propiedades de String exactamente por la razón que cita: Una vez que almacene valores numéricos en Integer o los valores int, deben ser números o " nada en absoluto " - De lo contrario: ¿cómo almacenó " mucho " (literalmente) en una propiedad Integer?

La validación del lado del cliente (por ejemplo, en Javascript) aún funcionará, pero no quieres confiar en esto.

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

Esto tiene el precio que necesita para hacer la conversión manualmente. Como Struts 1.2 es bastante antiguo, es posible que desee pensar en reemplazar gradualmente la infraestructura de su aplicación con tecnología más moderna y operar en dos tecnologías (la antigua y la nueva) al mismo tiempo durante un tiempo hasta que la parte antigua se vuelva lo suficientemente pequeña (o no es lo suficientemente importante como para ser eliminado.

nb: también tienes más control sobre qué valores quieres aceptar como números. Todavía recuerdo una antigua aplicación de tarjeta de crédito 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 Struts convirtió) pero optaron por un error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top