获取登录用户的姓名
1. 问题描述
FineReport中目前使用fr_username参数获取登录人的用户名,但是很多情况下是需要在模板里面使用登录人的姓名,比如用来参与计算或者显示,目前没有直接的参数来获取姓名的参数,下面提供一种根据fr_username参数来获取登录人姓名的方法。
注:本文提供的是自定义函数的方法,也可以通过fr_username查询finedb里用户表里对应的用户信息来获取登录用户的姓名,可参考获取报表管理平台用户信息
2. 示例
自定义一个函数,用fr_username作为参数返回登录人的姓名。
2.1 编写自定义函数
代码如下:
package com.fr.function;
import com.fr.fs.base.entity.User;
import com.fr.fs.control.UserControl;
import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive;
public class GetRealName extends AbstractFunction {
@Override
public Object run(Object[] arg0) {
if(null==arg0||arg0.length==0){
return "";
}
String username=arg0[0].toString();
try {
User U=UserControl.getInstance().getByUserName(username);
if(U==null){
return "";
}
String realname=U.getRealname();
return realname;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
}
2.2 编译自定义函数类
编译GetRealName.java类,将生成GetRealName.class类文件拷贝到%FR_HOME%/WebReport/WEB-INF/classes/com/fr/function。
2.3 添加自定义函数
启动设计器,点击服务器>函数管理器,添加一个函数命名为getrealname,类名选择com.fr.function.GetRealName,如下图:
2.4 使用自定义函数
直接使用添加的自定义函数,fr_username作为参数就能够返回登录人姓名了,如:在A1单元格输入公式=getrealname($fr_username),见下图
2.5 保存与预览
保存模板,添加至决策系统,查看模板可以看到显示了登录用户的姓名:
附件列表
主题: 二次开发
标签:
用户姓名