Red de conocimiento informático - Problemas con los teléfonos móviles - Struts2, ¿qué significa cuando el valor generado por la capa de presentación es ognl.NoConversionPossible?

Struts2, ¿qué significa cuando el valor generado por la capa de presentación es ognl.NoConversionPossible?

Este problema es causado por struts2.

Luego me encontré con un problema similar en un proyecto donde tenía un conjunto de casillas de verificación en la página que estaban asignadas a int[] en la acción. El error ocurre cuando no se selecciona ninguna casilla de verificación.

Análisis:

1. Comparación de dos códigos rotos, ambos generados por un conjunto de casillas de verificación, uno está escrito a mano; input type="checkbox" gt; y el otro es struts2. tag lt;s: checkboxgt;

Resultado: si se escribe a mano, el servidor obtiene un valor nulo, que se puede procesar normalmente con la etiqueta struts2, se vuelve falso, que no se puede convertir a int[]. error.

2. Ver el código fuente de struts2

Se descubre que el motivo es la casilla de verificación de struts2 en la plantilla y el interceptor.

En la plantilla simple, cada casilla de verificación genera una entrada oculta con el nombre "__checkbox", que es "el nombre de __checkbox_checkbox".

Struts2 utiliza una serie de interceptores de forma predeterminada, incluido CheckboxInterceptor, que puede determinar si una casilla de verificación está seleccionada y, en caso contrario, establecer su valor en falso.

Solución:

a. Agregue una entrada oculta con el mismo nombre que la casilla de verificación a la página, especificando un valor especial que se procesará durante la validación de parámetros en la operación

>

b. Utilice diferentes plantillas

c. Deshabilite CheckboxInterceptor

d. Checkbox interceptor

d. usted mismo y agregue un interruptor para elegir si desea generar la entrada oculta correspondiente para la casilla de verificación

e. Deshabilite el interceptor de casilla de verificación

f.