OGNL 静态字段在 struts2 中不起作用
无法使用 struts2 的 OGNL 访问静态字段
<s:checkbox name="operation" fieldValue="@com.xx.xxx.webapp.action.EntryAction@OPERATIONAL" />
上面的内容转换为 HTML,如下所示
<input type="checkbox" name="operation" value="@com.xx.xxx.webapp.action.EntryAction@OPERATIONAL" id="entry_operation"/>
,而不是声明为静态常量,因为
com.xx.xxx.webapp.action.EntryAction.OPERATIONAL = "OPERATIONAL";
我有常量
正确设置
Not able to access static fields with OGNL with struts2
<s:checkbox name="operation" fieldValue="@com.xx.xxx.webapp.action.EntryAction@OPERATIONAL" />
The above turning to HTML as below
<input type="checkbox" name="operation" value="@com.xx.xxx.webapp.action.EntryAction@OPERATIONAL" id="entry_operation"/>
instead the static constant declared as
com.xx.xxx.webapp.action.EntryAction.OPERATIONAL = "OPERATIONAL";
I've the constant <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
set correctly
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的问题与静态字段无关,而是与基本的 Struts2 标记语法有关。该代码在多个层面上都是错误的。
首先,您应该使用它的 value 属性,以便 Struts2 将内部内容解释为要评估和渲染的内容(fieldValue 仅适用于您需要的极少数情况在 html 中编写固定的临时 value="" 属性)。
其次,学习Struts2时不要使用静态字段,先了解基本和典型场景。
第三,使用该字符串作为复选框的值没有什么意义,因为该复选框只有两个值(true 和 false)。
Your problem is not related to static fields, but to basic Struts2 tag syntax. The code is wrong on several levels.
First, its the value attribute which you should be using, so that Struts2 interpret what's inside as something to evaluate and render (fieldValue is only for those rare cases in which you need to write a fixed ad-hoc value="" attribute in your html).
Second, you should not use static fields if you are learning Struts2, understand the basic and typyical scenarios first.
Third, it makes little sense to use that string as value of a checkbox, which has just two values (true and false).