获取登录用户的姓名
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 保存与预览
保存模板,添加至决策系统,查看模板可以看到显示了登录用户的姓名:

附件列表
       主题: 二次开发
      
	 
              标签:
                                               用户姓名
                              
                	     
             
        
 
            
              
  
    
