Struts2 devMode在Submit标签中使用“ key”属性时发生异常
我使用的Struts2已devMode
打开,以捕获尽可能多的警告和错误。现在我遇到了一些严重通知,仅在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>
而SEVERE通知不见了。
在第一种情况下,我有做错什么吗?
回答:
您使用的key
属性值未将提交按钮绑定到操作。Struts UI标记通常将name
属性的值绑定到操作。根据Struts docs页面,key
参数 为
设置此特定组件的键(名称,值,标签)
第一个name
是用于解析OGNL表达式以将值设置为值堆栈的属性。只要您没有这样的值,就抛出OGNL异常,但是参数拦截器用于捕获和忽略这种异常。而且只有在devMode
打开电源后,您才能在日志中看到此异常。
通常,如果您key
在Struts标记中使用属性,则应使用与属性文件中的键相同的属性名称,以便它正确绑定action属性。
以上是 Struts2 devMode在Submit标签中使用“ key”属性时发生异常 的全部内容, 来源链接: utcz.com/qa/400246.html