如果想要在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个单引号),如果加上的话就会报错,至于原因我并不太清楚。不过上面的语句亲测可用!