1. 程式人生 > >使用EL表達式調用java方法

使用EL表達式調用java方法

span 表達式 java 技術 mls www cti 一個 round

  首先,新建一個類,類中寫一個靜態方法

 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)}

使用EL表達式調用java方法