前些日子折腾过这一话题,而且在 Struts2 中 OGNL 如何更简单的访问静态变量和静态方法 记述了其中的原理,也对实现作了初步的猜想,但没给出实际的答案。这里将会给出,探寻的过程中有过不少尝试,下面也将把解决的过程描述出来,仍有不少迷域之处。先交待一下答案,必须在一个自定义的 PreResultListener 里压入静态方法或静态变量所在类的对象实例,在返回结果之前方能保证它们是在栈顶的。
解决此问题的一个明确目标就是要把静态方法或静态变量所在类的对象实例压到 ValueStatic 已知的位置上,当然最应该就是在栈顶,其他的栈数据,如当前 Action 实例或 Model 对象应该在它们之下,这样的话,你就能用 @vs@, 或 @vs1@... 这样的方式明确访问哪个类的静态成员。
最简单方法,前篇也讲过,在 Action 的 execute() 方法中往 ValueStatic 中压入的值会在栈顶--在 Action 实例和 Model 实例之上。 阅读全文 >>