今天做freemarker的时候,想用一下全局的变量。就是在a.ftl 和 b.ftl页面里面,使用a.action里面放入request的变量。a.action的视图页面是a.ftl ,b.ftl是另外一个action的视图页面。结果发现这个b的页面,无法获取到request里面的数据,报未定义的错误。
本来想在freemarker里面,找全局变量什么的问题,想了一会儿发现,freemarker只是显示数据,对数据的不定义。原因还是java web里面的变量范围问题。
变量放入到session里面,这个范围比request要大了。struts2的框架,最底层也是request和response,jsp作为最基本的,page,request,session和application,这些从小到大的范围也适用于框架。
还有在freemarker,数据为空,一定报错,不允许空值。所以对于字段可以为空的,一定要判断。