我正在使用 Struts2devMode
打开以捕获尽可能多的警告和错误。现在我遇到了一些仅在 devMode 中通知的严重通知。
我正在使用submit
标签,我包括key获取按钮文本的属性"Entrar"
来自一个名为global.BOTON_LOGIN
。该按钮是调用映射到该类的操作的表单的一部分actions.LoginAction
:
<s:submit key="global.BOTON_LOGIN" type="button" />
按钮的文本显示正确,当我按下此按钮时,一切正常,除了日志中显示的严重通知:
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', ]
我注意到为按钮生成的 HTML 代码是:
<button type="submit" id="login_global_BOTON_LOGIN" name="global.BOTON_LOGIN" value="Entrar">Entrar</button>
我摆脱该 SEVERE 条目的解决方法是使用value
属性和getText
方法而不是key
属性:
<s:submit value="%{getText('global.BOTON_LOGIN')}" type="button" />
进而生成 HTML 代码:
<button type="submit" id="login_0" value="Entrar">Entrar</button>
并且“严重”通知消失了。
在第一种情况下我做错了什么吗?
您已经使用了key
属性的值未将提交按钮绑定到操作。 Struts UI 标签通常绑定name
动作的属性值。根据Struts文档页面akey
范围 is
设置该特定组件的键(名称、值、标签)
第一个是name
属性用于解析 OGNL 表达式以将值设置到值堆栈中。只要您没有这样的值,就会抛出 OGNL 异常,但参数拦截器用于捕获并忽略此类异常。并且只有当你有devMode
开启后可以在日志中看到这个异常。
通常如果您使用的是key
在 Struts 标签中的 attribute 中,您应该使用与属性文件中的键相同的属性名称,以便正确绑定操作属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)