在看完NutShell这部分之后,把overview的剩下几部分溜了一遍,主要讲的主题有:AJAX、依赖注入(dependency injection)、切面(profiling)、debug,除了profiling那节讲的比较晕之外,其它几节还能勉强凑合着理解下,不知道profiling是不是就是Spring里面所讲的AOP,因为前面也提到了Spirng中的IoC(即依赖注入)。这几节中我唯一觉得有点意思的就是debug这节。AJAX只是大概的介绍了一下,在struts2中集成了2种比较流行的ajax框架:DOJO和DWR。
debug这个功能的“开通”很简单,只要在struts.properties文件中加上这么一句struts.devMode=true就OK了,这里要注意,struts.properties文件似乎是大小写敏感的,我就被这个官方文档误导了,它里面写的devmode = true,结果我死活看不到所要的结果,最后找了一份struts.properties的样本文件才发现是大小写的问题。
在“开通”了debug功能之后,我们在url中只要在最后加上?debug=xml就能在浏览器中看到一个xml文件的内容,这个xml文件包含了许多重要的数据信息,下面是我的测试用例所展示的xml文件的内容:
上面这个xml文件包含了paremetres、session、request以及值栈的信息,上面的例子中我是直接在浏览器地址中加个?debug=xml,所有paremetres中没有信息,如果我在提交页面的action中加上?debug=xml,parametre部分的输出就会是这样的:
相应的在value-stack中也会详细输出Action类tutorial.CustomerInserter的详细信息,如下图所示:
上图列出了aciton中各个属性以及它们的详细信息。如果能够知道这个action的详细信息,我想对于我们debug还是会有一些帮助的。除了?debug=xml之外,还有?debug=console的形式,它的显示效果我没能观察到,有人说它会显示一个弹出的OGNL控制台,允许用户测试OGNL表达式在值栈中,XML数据从xml模式被插入到页的顶部。