Struts2 cómo generar información de error en etiquetas
Esta es mi nota. Aunque no se ve bien cuando la copio, la organicé bien usando un software para tomar notas.
Struts2 proporciona dos métodos de verificación: verificación del lado del servidor (más importante) y verificación del lado del cliente.
Se divide además en: método de verificación validar(), método de verificación personalizado, verificación Hay tres métodos de verificación del marco, y los métodos de verificación del marco de verificación se dividen en dos tipos: método de verificación de prioridad del validador y método de verificación de prioridad de campo. (Sin verificación de lógica de negocios)
1. Verificar mediante el método de verificación validar()
Solo escribimos las situaciones incorrectas y no manejamos las situaciones correctas.
Nota: Cuando ocurre un error de validación de entrada en struts2, struts2 usará de forma predeterminada el nombre de entrada lt; resultgt o similar. De hecho, cuando ocurre un error de entrada, el usuario debe intentar proporcionar una entrada. información nuevamente para redirigir Vaya a la página de entrada.
Cuando ocurre un error, struts2 dará varios mensajes de nivel de error:
(1) Nivel de acción this.addActionError(anErrorMessage)
addActionError( Coloque el error mensaje en el mensaje), debería ser una colección. No agregue mensajes de error a esta colección cada vez.
La página utiliza la etiqueta lt;s:actionerror/gt; para mostrar mensajes de error, lo que significa que si hay un mensaje de error para la operación, se mostrará el mensaje de error.
lt;s:actionerror/gt;La etiqueta también tiene muchos atributos, como cssStyle="";El cssStyle que define el mensaje de error, por ejemplo: cssStyle="color:red";El error El mensaje es rojo.
(2) Nivel de campo this.addFieldError(fieldName, errorMessage)
addFieldError(fieldName, errorMessage), debe ser un tipo de mapa, que contenga dos parámetros: nombre y errorMessage.
Esta página utiliza la etiqueta lt;s:fieldderror cssStyle="color: blue"gt;lt;/s:fieldderrorgt;
Nota: Cuando la página utiliza la biblioteca de etiquetas que viene con struts2, mostrará automáticamente información de error a nivel de campo. Esta es una función que viene con la etiqueta struts2.
?Si no necesita dicha funcionalidad, simplemente establezca el valor del tema en simple.
(3) Implemente el método addActionError de la clase ActionSupport: primero cree un objeto ArrayList y luego agregue información de error al objeto.
(4) Cuando llamas a getActionError() para devolver una lista de mensajes de error a nivel de acción, en realidad estás devolviendo una copia de la colección en lugar de la colección en sí, por lo que llamas a clear() en una copia. de la colección aún se borrará. Los elementos están en la copia en lugar de en la colección original, y el contenido de la colección original no se ve afectado de ninguna manera. El contenido de la colección original no se verá afectado de ninguna manera. En otras palabras, la columna de mensajes de error a nivel de operación es de solo lectura para los desarrolladores.
(5) Los mensajes de error a nivel de FiledError se implementan en forma de LinkHashMap, donde el tipo de clave es String y el tipo de valor es Listlt;, lo que significa que un FieldName puede corresponder a múltiples mensajes de error. Estos mensajes de error se colocan en una colección Listlt; Por lo tanto, puede haber varios mensajes de error para un campo de la página.
(6) Determine si se trata de un error a nivel de operación o un error a nivel de campo según los valores de retorno de los métodos hasActionError y hasFieldError.
(7) clearActionErrors(); Borrar todos los errores de acción
clearFieldErrors(); Borrar todos los errores de campo
clearError(); Colección de
Ejemplo: como se muestra en la siguiente figura, la edad pertenece al tipo int, el cumpleaños y el graduado pertenecen al tipo Fecha. ¿Por qué se invocan tres mensajes de error, edad y cumpleaños? ! aparece? p>
Respuesta: Debido a que todo lo que ingresamos son cadenas, no podemos encontrar los métodos setAge, setBirthday y setGraduate en operaciones con tipos de parámetros de cadena, por lo que no podemos asignar valores a estos tres miembros, pero edad, cumpleaños, graduación ya tiene un valor de inicialización predeterminado de 0 cuando se crea una instancia del objeto.
Los primeros tres mensajes de error de campo a continuación son causados por caracteres de entrada con formato incorrecto, lo que ocurre durante la fase de conversión de tipo, no en la fase de validación de entrada.
Punto de conocimiento: la información del error de conversión de tipo se coloca en el campo.
2. Proceso de ejecución (1) Primero realice la conversión de tipo (2) Luego realice la validación de entrada (ejecute el método de validación). (3) Si ocurre algún error durante el proceso anterior, el método de ejecución o personalizado no se ejecutará. Irá a la página en struts.xml correspondiente a la etiqueta
Cuando no haya errores a nivel de campo ni a nivel de operación, se ejecutará el método de ejecución.
3. Método de verificación de métodos personalizados
(1) Para los métodos personalizados (como myExecute() arriba), su método validar() se ejecutará antes de la invocación. , es decir, la validación se produce antes de que se ejecute el método personalizado.
(2) Validación de entrada personalizada de métodos personalizados (métodos personalizados especificados por métodos en operaciones)
? public String myExecute() throws Exception{ ?return SUCCESS; método personalizado;
El formato general del método de validación: public void validarMyExecute(){} El nombre del método comienza con validar, seguido del nombre del método, con la primera letra del nombre del método en mayúscula. La implementación subyacente se implementa a través de la reflexión. Llamaremos al método que valida la entrada a myExecute() validarMyExecute().
(3) Cuando tanto el método de verificación del método personalizado como el método de verificación existen en la operación, el método de verificación del método personalizado se ejecuta primero y luego se ejecuta el método de verificación si alguno de los dos métodos de verificación. ocurre, la operación o Si hay un error a nivel de campo, no se ejecutará ni la ejecución ni el método de ejecución personalizado.
?Si elimina el método personalizado del método, el método de verificación personalizado publicado no se ejecutará, pero el método de verificación definitivamente se ejecutará (este método está escrito en Acción), por lo tanto, validar Se utiliza para verificar el método de ejecución.
4. Personalice los mensajes de error en errores a nivel de campo
Construya un archivo de propiedades con el nombre de Acción en el directorio de nivel de acción. El formato del nombre del archivo de configuración es: Nombre de acción.properties<. /p> p>
Por ejemplo: RegisterAction.properties
El formato de escritura del contenido del archivo de configuración es: invalid.fieldvalue.Field name = mensaje de error como: invalid.fieldvalue.age p>
Donde el nombre del campo Es el nombre del atributo en la Acción, es decir, el mensaje de error que aparece cuando ocurre un error de campo en este atributo.
El nombre del campo es el nombre del atributo en la Acción, que es el mensaje de error que aparece cuando ocurre un error de campo en el atributo.
5. Marco de verificación Struts2 (archivo xml de verificación)
(1) El archivo xml del marco de verificación y la acción a verificar están en el mismo paquete
(2) Formato de nombre del archivo xml del marco de validación: acción nombre-validación.xml Por ejemplo: RegisterAction -validation.xml
(3) Dividido específicamente en validador de primer campo (campo) y validador primero validador (validador)
6. ¿El campo primero validador (campo primero, luego validador)
? ¿El validador incorporado de xwork está en el archivo default.xml en com.opensympony.xwork2? .validator.validators directorio medio.
? Hay varias categorías de validador:
? requerido, cadena requerida, int, largo, corto, doble, fecha, expresión de campo, expresión, correo electrónico
? , visitante, conversión, longitud de cadena, expresión regular, visitante condicional
(5) Etiqueta de archivo xml del marco de comprobación Struts2 y análisis de atributos de etiqueta
?① lt; /fieldgt; Tipo de validador, ¿el valor del atributo de nombre es el valor del atributo (variable miembro) que se verificará en la Acción?
?Por ejemplo: lt;field name="nombre de usuario"gt;lt;/fieldgt;
?② lt;field-validator type=""gt;lt;/field - validatorgt; Verifique reglas o validadores, puede haber múltiples Por ejemplo: ?lt;field-validator type="requiredstring" gt;lt;/fieldgt; ? validator type="requiredstring"gt;lt;/field-validatorgt; Indica que el nombre de usuario solo puede ser caracteres Cadena, no puede estar vacía si: type="required" ? Se refiere a un tipo distinto de string type="stringlength" ¿Se refiere a la longitud de la cadena ? p> type="int" ? Especifica que el valor a comprobar debe ser de tipo int type="date" ? Especifica que el valor a comprobar es de tipo fecha, lt; paramgt; lt; / paramgt; en la etiqueta El valor de la cadena debe escribirse como una fecha porque en la etiqueta lt;paramgt; hemos escrito un estilo de fecha para la cadena y el atributo correspondiente del inspector en xmwork es Fecha. La propiedad correspondiente del validador interno de xmwork es de tipo Fecha, por lo que aquí se utiliza un convertidor de tipo. ③ Cuando ocurre un error, use lt; messagegt; nombredeusuario /messagegt; etiqueta de mensaje Por ejemplo: lt nombre de usuario mensajegt; lt; messagegt; ¿Marcar clave de atributo? Por ejemplo: lt; message key="username.invalid"gt; que es lo mismo que Acción Ubicado en el mismo paquete de software ?Formato de escritura: inglés package_en_US.properties ?Chino package_zh_CN.properties * package.properties es el archivo de recursos predeterminado Cuándo. El archivo de recursos que está buscando no existe, busque el archivo de recursos predeterminado. La clave en el archivo de configuración y la clave en la información deben tener el mismo nombre; si tienen nombres diferentes, la clave en la información se mostrará como un mensaje de error. *. Cambie el idioma en el que el navegador muestra el contenido de la página cambiando la preferencia de idioma de visualización del navegador. ?④ lt;param name=""gt;lt;/paramgt; lt;param name=""gt;lt;/paramgt; ¿Es una subetiqueta lt;field-validatorgt; puede seleccionar. El nombre del atributo en param debe ser coherente con el nombre del atributo de la clase correspondiente en el código fuente, para que el valor se pueda asignar correctamente. Por ejemplo: lt;param name="minLength"gt;4lt;/paramgt; ¿Establecer la longitud máxima de la cadena? lt;param name="maxLength"gt;6lt;/paramgt; Establece la longitud mínima de la cadena lt;param name="trim"gt;falselt;/paramgt ?Establece si se eliminan espacios en ambos lados de la cadena ?Referencia minLength y maxLength: ?${minLength} obtiene el valor de minLength, ${maxLength} ${minLength; } obtiene el valor de maxLength. ?Por ejemplo, lt;messagegt;¡El nombre de usuario debe estar entre ${minLength} y ${maxLength}! lt;/messagegt;? 7. Validador primer validador (el validador está antes del campo) lt; validador type="requiredstring"gt;--gt; ? lt; param name="fieldName"gt; nombre de usuario lt; /paramgt; define el nombre del campo a verificar, el valor del nombre aquí se fija en fieldName ?lt;/validatorgt; Los validadores de primer validador y los validadores de primer campo se pueden combinar. Resumen de verificación de entrada de Struts2: secuencia de ejecución de verificación del marco de struts2: ?1) Realizar la conversión de tipo primero (la verificación solo se puede realizar después de la conversión de tipo) ? 2) Primero ejecute el método de verificación del marco de verificación (archivo xml) ?3) Ejecute el método de verificación del método personalizado ?4) Ejecute el método de verificación validar() ?Después de ejecutar el método validar (), el marco struts2 verificará si hay información de error a nivel de campo o de operación. Cuando ocurre algún mensaje de error, struts2 no ejecutará el método de ejecución personalizado ni el método de ejecución (), sino que redirigirá a la página correspondiente a la entrada en la etiqueta Se recomienda utilizar el método de validación validar(). ?