如果想要在Birt的script中得到Session的话,以下便是正解:
importPackage(Packages.javax.servlet.http); var request = reportContext.getHttpServletRequest(); var oper = request.getSession().getAttribute("oper"); var sclass = request.getSession().getAttribute("sclass"); var query=" where 1=1"; var setreserve2=""; if (oper!=null && !("".equals(oper))){ setreserve2=" and t.reserve2=case when '1'="+sclass+" then t.reserve2 else (select reserve1 from db_sysadmin where oper="+oper+") end"; query+=setreserve2; }
需要注意的是从Session里面取出来的值如果要和SQL语句动态连接起来的话,值的外面不需要再加上‘’(即2个单引号),如果加上的话就会报错,至于原因我并不太清楚。不过上面的语句亲测可用!