使用EL表达式调用java方法

  首先,新建一个类,类中写一个静态方法

复制代码
 1 public class PrivilegeUtils {
 2     public static Boolean checkPrivilegeByName(User user, String name){
 3         if(isAdmin(user.getLoginName())){
 4             return true;
 5         }
 6         for(Role r : user.getRoles()){
 7             for(Privilege p : r.getPrivileges()){
 8                 if(name.equals(p.getName())){
 9                     return true;
10                 }
11             }
12         }
13         return false;
14     }
15 }
复制代码

  然后在WEB-INF文件夹下新建一个tld文件(注意:可以放入自己新建的文件夹中,但不能放在lib和classess目录中)

  tld中内容如下

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
    <tlib-version>1.0</tlib-version>
    <short-name>myFunction</short-name>
    <uri>http://www.privilege.demo.com/myFunction</uri>
    <function>
        <name>checkPrivilegeByName</name>
        <function-class>com.demo.privilege.utils.PrivilegeUtils</function-class>
        <function-signature>java.lang.Boolean checkPrivilegeByName(com.demo.privilege.entity.User, java.lang.String)</function-signature>
    </function>
</taglib>
复制代码

  接着,在jsp的头部引入

<%@ taglib uri="http://www.privilege.demo.com/myFunction" prefix="myFunction"%>

  最后就是使用了

${myFunction:checkPrivilegeByName(loginUser, privilegeTop.name)}

 

posted @   高压锅里的小白  阅读(4758)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
阅读排行:
· 一个适用于 .NET 的开源整洁架构项目模板
· API 风格选对了,文档写好了,项目就成功了一半!
· 【开源】C#上位机必备高效数据转换助手
· .NET 9.0 使用 Vulkan API 编写跨平台图形应用
· .NET 依赖注入中的 Captive Dependency
点击右上角即可分享
微信分享提示