转载自品略图书馆 http://www.pinlue.com/article/2020/02/1017/549949958240.html
系统参数和变量
参数是指客户端向服务端提交的值,变量是指系统在运行期间产生的值或通过变量管理器配置的变量。这些参数和变量可以方便在服务端或者客户端访问。
在服务器端访问参数和变量
在WebBuilder中参数通过request.getParameter方法获得,使用文件上传的方法提交的参数通过request.getAttribute方法获得。变量通常存储在session的attribute或request的attribute中, 变量可以通过session.getAttribute或request.getAttribute方法获取。
系统提供API方法WebUtil.fetch可以获得指定名称的参数或变量值,在ServerScript中可以使用app.get方法替代,建议使用后者:
3
1
var val = WebUtil.fetch(request, "sys.user"); //获取当前用户id
2
val = app.get("sys.user"); //获取当前用户id,建议使用的方法
WebUtil.fetch和app.get方法它会依次获取session和request中的值,其获取的优先级从高到低为存储在session attribute中的值,存储在request attribute中的值和存储在request parameter中的值。
获取变量管理器配置的变量可以使用Var.get方法,获取多国语言变量可以使用Str.format(ServerScript中可用app.format替代)方法,详见API手册。
在客户端访问参数和变量
在客户端xwl模块文件中,可以使用语法"{#name#}"来获取参数或变量值,其效果等同于app.get方法,但比该方法功能更丰富,使用该语法还可以获取系统配置的变量和多国语言变量值。获得变量管理器配置的变量使用“{#Var.name#}”,比如设置panel的title属性为“我的应用 - {#Var.sys.app.title#}”; 获得多国语言的变量使用“{#Str.name#}”,比如设置button的text属性为“{#Str.ok#}”。
使用JavaScript获取参数或变量:
2
1
var val = "{#sys.user#}"; //获取当前用户id
如果变量值本身可能包含引号,可以先在服务器端ServerScript中对变量进行引用,比如如下代码:
2
1
app.set("varName", StringUtil.text(app.get("varName"))); //把变量值引用后重设值
如果变量值为JSON对象或其他类型,可以使用以下方法处理:
在服务器端:
2
1
app.set("paramName", app.quote(jsonObject)); //把后台JSON对象转换为字符串参数,在前台可以使用Wb.decode解码
在客户端:
2
1
val = Wb.decode("{#paramName#}"); //解码,把字符串变成对象值
运行期变量
下表为系统运行期间产生的变量,可以在程序中直接引用:
变量名称含义
sys.user当前用户的id号
sys.username当前用户的用户名称
sys.dispname当前用户的显示名称
sys.dept当前用户所属的部门id号
sys.roles当前用户所具有的所有角色组成的数组对象
sys.roleList当前用户所具有的所有角色组成的字符串,角色之间以逗号分隔
sys.ip客户端登录时的IP地址
sys.verifyCode登录时最后输入的验证码
sys.date当前发起请求时服务器端的日期时间
sys.id当前发起请求时服务器端产生的id号,每次请求id均为唯一
sys.theme当前用户桌面系统采用的主题方案
sys.touchTheme当前用户移动触摸系统采用的主题方案
sys.editTheme当前用户脚本编辑器采用的主题方案
sys.logined当前用户是否成功登录的标记
debugSuffix如果当前为调试状态,该变量的值为"-debug",否则为空字符串
打开[管理工具]->[变量配置】模块,配置变量sys.session.sessionVars可以把当前用户存储在WB_VALUE表中的值存储到session的attribute当中,以方便在会话内对变量快速的访问。