这几天在看jeecms的源码,有点头大, 其中发现一个问题,并做了相关测试,不解,后来仔细查看了一下并做了更为详细的测试,才发现其实是看问题的角度不对。
问题是这样的, 我在coreContext.xml中发现有定义一个bean, 注明为 <!--系统上下文信息PROVIDER-->如下:
<bean id="contextPvd" class="com.jeecms.common.struts2.ContextPvdImpl" autowire="byName"/>
这个类查过是通过ServletActionContext获得其session啊,系统内路径这方面的功能。
在许多Action中有调用,但看到有些非action的普通类中也有调用, 而且可以正常取到值,我把这个类原样copy到工程中,用一个普通类对其进行调用, 结果报错 nullpoint, 不解,不在容器中的类也可以获得ServletActionContext中的数据吗?不知是如何处理的, 在论坛中请教过,没有后文.
这两天仔细看了下, 这些非容器中的类确定是在Action中被调用, 所以又获得了容器的环境, 也做了实验证明确实是这样,哎, 犯了低级的思维错误,这就是常说的知其然,不知其所以然啊! 看来要多方面思考问题,注意细节.由此记录一下。