jsp - struts2 file
Struts2 devMode Excepción al usar el atributo "clave" en la etiqueta de envío (1)
Estoy usando Struts2 con devMode
activado para detectar tantas advertencias y errores como sea posible. Ahora me encontré con una notificación SEVERE que solo se notifica en devMode.
Estoy usando la etiqueta de submit
e global.BOTON_LOGIN
el atributo clave para obtener el texto del botón "Entrar"
desde una propiedad llamada global.BOTON_LOGIN
. El botón es parte de un formulario que llama una acción asignada a las actions.LoginAction
la actions.LoginAction
:
<s:submit key="global.BOTON_LOGIN" type="button" />
El texto del botón se muestra correctamente y cuando presiono este botón todo funciona bien, a excepción de esta notificación SEVERE que aparece en el registro:
30-Mar-2015 00:46:37.855 SEVERE [http-apr-8080-exec-146] com.opensymphony.xwork2.util.logging.jdk.JdkLogger.error Developer Notification (set struts.devMode to false to disable this message): Unexpected Exception caught setting ''global.BOTON_LOGIN'' on ''class actions.LoginAction: Error setting expression ''global.BOTON_LOGIN'' with value [''Entrar'', ]
Me di cuenta de que el código HTML generado para el botón es:
<button type="submit" id="login_global_BOTON_LOGIN" name="global.BOTON_LOGIN" value="Entrar">Entrar</button>
Mi solución para deshacerme de esa entrada SEVERE es usar el atributo value
y el método getText
lugar del atributo key
:
<s:submit value="%{getText(''global.BOTON_LOGIN'')}" type="button" />
que a su vez genera ese código HTML:
<button type="submit" id="login_0" value="Entrar">Entrar</button>
y la notificación SEVERE se ha ido.
¿Hay algo que hago mal en el primer caso?
Has usado el valor de un atributo key
que no vinculó un botón de enviar a la acción. Las etiquetas UI de Struts generalmente vinculan el valor del atributo de name
a la acción. De acuerdo con la página de documentación de Struts, un parámetro key
es
Establecer la clave (nombre, valor, etiqueta) para este componente en particular
El primero es un atributo de name
se usa para analizar la expresión OGNL para establecer un valor para la pila de valores. En la medida en que no tenga ese valor, se lanzará la excepción OGNL, pero el interceptor de parámetros se usó para captar e ignorar este tipo de excepciones. Y solo si tiene devMode
activado, puede ver esta excepción en los registros.
Por lo general, si está utilizando un atributo de key
en la etiqueta de Struts, debe usar el mismo nombre de propiedad que una clave en el archivo de propiedades, de modo que vincula correctamente la propiedad de acción.