1、jsp 頭部頁面引入函數
jsp頁面需要引入自定義fns函數聲明:
<%@ taglib prefix=”fns” uri=”/WEB-INF/tlds/fns.tld” %>,自定義的tld檔案位于/WEB-INF/tlds/fns.tld
一般需要C标簽配合使用,同時引入C标簽聲明:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
2、fns.tld 代碼,仿照jstl的fn函數fn.tld的書寫格式:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib 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"
version="2.0">
<description>JSTL 1.1 functions library</description>
<display-name>JSTL functions sys</display-name>
<tlib-version>1.1</tlib-version>
<short-name>fns</short-name>
<uri>http://java.sun.com/jsp/jstl/functionss</uri>
<function>
<description>擷取開發公司名稱</description>
<name>getCompanyName</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.String getCompanyName()</function-signature>
<example>${fns:getCompanyName()}</example>
</function>
<function>
<description>擷取項目名稱</description>
<name>getProjectName</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.String getProjectName()</function-signature>
<example>${fns:getProjectName()}</example>
</function>
<function>
<description>擷取基本設定資訊</description>
<name>getSysBase</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>com.jeeplus.modules.sys.entity.SysBase getSysBase()</function-signature>
<example>${fns:getSysBase()}</example>
</function>
<function>
<description>擷取管理路徑</description>
<name>getAdminPath</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.String getAdminPath()</function-signature>
<example>${fns:getAdminPath()}</example>
</function>
<function>
<description>擷取網站路徑</description>
<name>getFrontPath</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.String getFrontPath()</function-signature>
<example>${fns:getFrontPath()}</example>
</function>
<function>
<description>擷取網站URL字尾</description>
<name>getUrlSuffix</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.String getUrlSuffix()</function-signature>
<example>${fns:getUrlSuffix()}</example>
</function>
<function>
<description>擷取配置</description>
<name>getConfig</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.String getConfig(java.lang.String)</function-signature>
<example>${fns:getConfig(key)}</example>
</function>
<function>
<description>擷取常量</description>
<name>getConst</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.Object getConst(java.lang.String)</function-signature>
<example>${fns:getConst(key)}</example>
</function>
<!-- UserUtils -->
<function>
<description>數字轉換為中文字元串</description>
<name>convertToChart</name>
<function-class>com.jeeplus.common.utils.StringUtils</function-class>
<function-signature>java.lang.String convertToChart(int)</function-signature>
<example>${fns:convertToChart(digit)}</example>
</function>
<function>
<description>擷取目前使用者對象</description>
<name>getUser</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>com.jeeplus.modules.sys.entity.User getUser()</function-signature>
<example>${fns:getUser()}</example>
</function>
<function>
<description>根據編碼擷取使用者對象</description>
<name>getUserById</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>com.jeeplus.modules.sys.entity.User get(java.lang.String)</function-signature>
<example>${fns:getUserById(id)}</example>
</function>
<function>
<description>擷取授權使用者資訊</description>
<name>getPrincipal</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>com.jeeplus.modules.sys.security.SystemAuthorizingRealm.Principal getPrincipal()</function-signature>
<example>${fns:getPrincipal()}</example>
</function>
<function>
<description>擷取目前使用者的菜單對象清單</description>
<name>getMenuList</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>java.util.List getMenuList()</function-signature>
<example>${fns:getMenuList()}</example>
</function>
<function>
<description>擷取目前使用者的菜單對象清單</description>
<name>getTopMenu</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>com.jeeplus.modules.sys.entity.Menu getTopMenu()</function-signature>
<example>${fns:getTopMenu()}</example>
</function>
<function>
<description>擷取目前時間與指定時間的內插補點</description>
<name>getTime</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>java.util.Date getTime(java.lang.String)</function-signature>
<example>${fns:getTime(java.lang.String)}</example>
</function>
<function>
<description>擷取目前使用者的區域對象清單</description>
<name>getAreaList</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>java.util.List getAreaList()</function-signature>
<example>${fns:getAreaList()}</example>
</function>
<function>
<description>擷取目前使用者的部門對象清單</description>
<name>getOfficeList</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>java.util.List getOfficeList()</function-signature>
<example>${fns:getOfficeList()}</example>
</function>
<function>
<description>擷取目前使用者緩存</description>
<name>getCache</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>java.lang.Object getCache(java.lang.String, java.lang.Object)</function-signature>
<example>${fns:getCache(cacheName, defaultValue)}</example>
</function>
<!-- DictUtils -->
<function>
<description>擷取字典标簽</description>
<name>getDictLabel</name>
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<function-signature>java.lang.String getDictLabel(java.lang.String, java.lang.String, java.lang.String)</function-signature>
<example>${fns:getDictLabel(value, type, defaultValue)}</example>
</function>
<function>
<description>擷取字典标簽(多個)</description>
<name>getDictLabels</name>
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<function-signature>java.lang.String getDictLabels(java.lang.String, java.lang.String, java.lang.String)</function-signature>
<example>${fns:getDictLabels(values, type, defaultValue)}</example>
</function>
<function>
<description>擷取字典值</description>
<name>getDictValue</name>
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<function-signature>java.lang.String getDictValue(java.lang.String, java.lang.String, java.lang.String)</function-signature>
<example>${fns:getDictValue(label, type, defaultValue)}</example>
</function>
<!--擷取字典對象清單 start-->
<function>
<description>擷取字典對象清單</description>
<!--EL頁面調用名字-->
<name>getDictList</name>
<!--指定标簽的處理類,指定了标簽由哪個Java類來處理。-->
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<!--指定EL頁面調用名字中實際調用的方法.指定處理類的實際方法.參數和回調函數要寫完整路徑-->
<function-signature>java.util.List getDictList(java.lang.String)</function-signature>
<!--舉例說明-->
<example>${fns:getDictList(type)}</example>
</function>
<!--擷取字典對象清單 end-->
<function>
<description>擷取字典對象清單</description>
<!--EL頁面調用名字-->
<name>getDictListForQuestion</name>
<!--指定标簽的處理類,指定了标簽由哪個Java類來處理。-->
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<!--指定EL頁面調用名字中實際調用的方法.指定處理類的實際方法.參數和回調函數要寫完整路徑-->
<function-signature>java.util.List getDictListForQuestion(java.lang.String)</function-signature>
<!--舉例說明-->
<example>${fns:getDictListForQuestion(type)}</example>
</function>
<!--擷取字典對象清單 start-->
<function>
<description>擷取字典對象清單</description>
<!--EL頁面調用名字-->
<name>getDictList2</name>
<!--指定标簽的處理類,指定了标簽由哪個Java類來處理。-->
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<!--指定EL頁面調用名字中實際調用的方法.指定處理類的實際方法.參數和回調函數要寫完整路徑-->
<function-signature>java.util.List getDictList2(java.lang.String,java.lang.String)</function-signature>
<!--舉例說明-->
<example>${fns:getDictList2(type,keyValue)}</example>
</function>
<!--擷取字典對象清單 end-->
<function>
<description>擷取系統常量對象清單</description>
<!--EL頁面調用名字-->
<name>getConsList</name>
<!--指定标簽的處理類,指定了标簽由哪個Java類來處理。-->
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<!--指定EL頁面調用名字中實際調用的方法.指定處理類的實際方法.參數和回調函數要寫完整路徑-->
<function-signature>java.util.List getConsList(java.lang.String)</function-signature>
<!--舉例說明-->
<example>${fns:getConsList(type)}</example>
</function>
<function>
<description>擷取系統常量對象清單-增加所有**選項</description>
<!--EL頁面調用名字-->
<name>getConsList2</name>
<!--指定标簽的處理類,指定了标簽由哪個Java類來處理。-->
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<!--指定EL頁面調用名字中實際調用的方法.指定處理類的實際方法.參數和回調函數要寫完整路徑-->
<function-signature>java.util.List getConsList2(java.lang.String,java.lang.String)</function-signature>
<!--舉例說明-->
<example>${fns:getConsList2(type,keyValue)}</example>
</function>
<function>
<description>擷取字典對象清單</description>
<name>getDictListJson</name>
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<function-signature>java.lang.String getDictListJson(java.lang.String)</function-signature>
<example>${fns:getDictListJson(type)}</example>
</function>
<function>
<description>擷取對象的屬性值</description>
<name>getValue</name>
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<function-signature>java.lang.String getValue(java.lang.Object, java.lang.String)</function-signature>
<example>${fns:getValue(obj, name)}</example>
</function>
<function>
<description>擷取兩級對象的屬性值</description>
<name>getObjectValue</name>
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<function-signature>java.lang.String getObjectValue(java.lang.Object, java.lang.String)</function-signature>
<example>${fns:getObjectValue(obj, name)}</example>
</function>
<!-- Encodes -->
<function>
<description>URL編碼</description>
<name>urlEncode</name>
<function-class>com.jeeplus.common.utils.Encodes</function-class>
<function-signature>java.lang.String urlEncode(java.lang.String)</function-signature>
<example>${fns:urlEncode(part)}</example>
</function>
<function>
<description>URL解碼</description>
<name>urlDecode</name>
<function-class>com.jeeplus.common.utils.Encodes</function-class>
<function-signature>java.lang.String urlDecode(java.lang.String)</function-signature>
<example>${fns:urlDecode(part)}</example>
</function>
<function>
<description>HTML編碼</description>
<name>escapeHtml</name>
<function-class>com.jeeplus.common.utils.Encodes</function-class>
<function-signature>java.lang.String escapeHtml(java.lang.String)</function-signature>
<example>${fns:escapeHtml(html)}</example>
</function>
<function>
<description>HTML解碼</description>
<name>unescapeHtml</name>
<function-class>com.jeeplus.common.utils.Encodes</function-class>
<function-signature>java.lang.String unescapeHtml(java.lang.String)</function-signature>
<example>${fns:unescapeHtml(html)}</example>
</function>
<!-- StringUtils -->
<function>
<description>從後邊開始截取字元串</description>
<name>substringAfterLast</name>
<function-class>org.apache.commons.lang3.StringUtils</function-class>
<function-signature>java.lang.String substringAfterLast(java.lang.String, java.lang.String)</function-signature>
<example>${fns:substringAfterLast(str,separator)}</example>
</function>
<function>
<description>判斷字元串是否以某某開頭</description>
<name>startsWith</name>
<function-class>org.apache.commons.lang3.StringUtils</function-class>
<function-signature>boolean startsWith(java.lang.CharSequence, java.lang.CharSequence)</function-signature>
<example>${fns:startsWith(str,prefix)}</example>
</function>
<function>
<description>判斷字元串是否以某某結尾</description>
<name>endsWith</name>
<function-class>org.apache.commons.lang3.StringUtils</function-class>
<function-signature>boolean endsWith(java.lang.CharSequence, java.lang.CharSequence)</function-signature>
<example>${fns:endsWith(str,suffix)}</example>
</function>
<function>
<description>縮寫字元串,超過最大寬度用“...”表示</description>
<name>abbr</name>
<function-class>com.jeeplus.common.utils.StringUtils</function-class>
<function-signature>java.lang.String abbr(java.lang.String, int)</function-signature>
<example>${fns:abbr(str,length)}</example>
</function>
<function>
<description>替換掉HTML标簽</description>
<name>replaceHtml</name>
<function-class>com.jeeplus.common.utils.StringUtils</function-class>
<function-signature>java.lang.String replaceHtml(java.lang.String)</function-signature>
<example>${fns:replaceHtml(html)}</example>
</function>
<function>
<description>轉換為JS擷取對象值,生成三目運算傳回結果。</description>
<name>jsGetVal</name>
<function-class>com.jeeplus.common.utils.StringUtils</function-class>
<function-signature>java.lang.String jsGetVal(java.lang.String)</function-signature>
<example>${fns:jsGetVal('row.user.id')} 傳回:!row?'':!row.user?'':!row.user.id?'':row.user.id</example>
</function>
<!-- DateUtils -->
<function>
<description>擷取目前日期</description>
<name>getDate</name>
<function-class>com.jeeplus.common.utils.DateUtils</function-class>
<function-signature>java.lang.String getDate(java.lang.String)</function-signature>
<example>${fns:getDate(pattern)}</example>
</function>
<function>
<description>擷取過去的天數</description>
<name>pastDays</name>
<function-class>com.jeeplus.common.utils.DateUtils</function-class>
<function-signature>long pastDays(java.util.Date)</function-signature>
<example>${fns:pastDays(date)}</example>
</function>
<function>
<description>将日期對象Date轉為标準格式字元串yyyy-mm-dd hh:mm:ss顯示</description>
<name>formatDateTime</name>
<function-class>com.jeeplus.common.utils.DateUtils</function-class>
<function-signature>java.lang.String formatDateTime(java.util.Date)</function-signature>
<example>${fns:formatDateTime(date)}</example>
</function>
<function>
<description>将日期對象Date轉為幾小時前,幾天前顯示</description>
<name>formatDateDiff</name>
<function-class>com.jeeplus.common.utils.DateUtils</function-class>
<function-signature>java.lang.String formatDateDiff(java.util.Date)</function-signature>
<example>${fns:formatDateDiff(date)}</example>
</function>
<!-- JsonMapper -->
<function>
<description>對象轉換JSON字元串</description>
<name>toJson</name>
<function-class>com.jeeplus.common.mapper.JsonMapper</function-class>
<function-signature>java.lang.String toJsonString(java.lang.Object)</function-signature>
<example>${fns:toJson(object)}</example>
</function>
<function>
<description>根據編碼擷取使用者對象</description>
<name>getByLoginName</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>com.jeeplus.modules.sys.entity.User getByLoginName(java.lang.String)</function-signature>
<example>${fns:getByLoginName(loginName)}</example>
</function>
<function>
<description>根據目前使用者id擷取使用者頭像</description>
<name>getUserPhoto</name>
<function-class>com.jeeplus.modules.sys.utils.UserUtils</function-class>
<function-signature>com.jeeplus.modules.sys.entity.User getUserPhoto(java.lang.String)</function-signature>
<example>${fns:getUserPhoto(userId)}</example>
</function>
<!-- 綁定學年 -->
<function>
<description>綁定學年</description>
<name>getSchoolYearList</name>
<function-class>com.jeeplus.modules.sys.utils.DictUtils</function-class>
<function-signature>com.jeeplus.modules.sys.utils.DictUtils getSchoolYearList()</function-signature>
<example>${fns:getSchoolYearList()}</example>
</function>
<function>
<description>擷取項目盤符位址</description>
<name>getPubEnclosureDirPath</name>
<function-class>com.jeeplus.common.config.Global</function-class>
<function-signature>java.lang.String getPubEnclosureDirPath()</function-signature>
<example>${fns:getPubEnclosureDirPath()}</example>
</function>
</taglib>
3、 為表達式函數(标簽函數)提供背景服務類:common.config.Global
/**
* Copyright © 2015-2020 <a href="http://www.runyu.com/" target="_blank" rel="external nofollow" >RunYu</a> All rights reserved.
*/
package com.jeeplus.common.config;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.ibatis.io.Resources;
import org.springframework.core.io.DefaultResourceLoader;
import com.ckfinder.connector.ServletContextFactory;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jeeplus.common.utils.CacheUtils;
import com.jeeplus.common.utils.PropertiesLoader;
import com.jeeplus.common.utils.StringUtils;
import com.jeeplus.modules.sys.entity.SysBase;
/**
* 全局配置類
*
* @author runyu
* @version 2014-06-25
*/
public class Global {
/**
* 目前對象執行個體
*/
private static Global global = new Global();
/**
* 儲存全局屬性值
*/
private static Map<String, String> map = Maps.newHashMap();
/**
* 屬性檔案加載對象
*/
private static PropertiesLoader loader = new PropertiesLoader("runyu.properties");
/**
* 顯示/隐藏
*/
public static final String SHOW = "1";
public static final String HIDE = "0";
/**
* 是/否
*/
public static final String YES = "1";
public static final String NO = "0";
/**
* 對/錯
*/
public static final String TRUE = "true";
public static final String FALSE = "false";
/**
* 上傳檔案基礎虛拟路徑
*/
public static final String USERFILES_BASE_URL = "/userFiles/";
/**
* 上傳檔案基礎虛拟路徑
*/
public static final String USERFILES_URL = "/admin/logo/";
/**
* 上傳圖檔基礎虛拟路徑
*/
public static final String IMAGE_BASE_URL = "/logo/";
/**
* 擷取目前對象執行個體
*/
public static Global getInstance() {
return global;
}
public static boolean doAuthorization = false;
public static final String AUTHORIZATIONCACHE = "AuthorizationCache";
public static final String AUTHORIZATIONCACHEKEY = "Authorization";
/**
* 擷取配置
*
* @see ${fns:getConfig('adminPath')}
*/
@SuppressWarnings("unchecked")
public static String getConfig(String key) {
// 驗證攔截器是否已經被調用。如果沒有被調用,抛出錯誤
// System.out.println("--------------------------------------------doAuthorization:" + doAuthorization
// + "--------------------------------------------");
// if (doAuthorization) {
// HashMap<String, Boolean> mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE,
// AUTHORIZATIONCACHEKEY);
// String sdate = "";
// Date ddate = new Date();
// sdate = (new SimpleDateFormat("yyyyMMdd")).format(ddate);
// System.out.println("--------------------------------------------sdate:" + sdate
// + "--------------------------------------------");
// if (mapAuthorization == null) {
// System.out.println("--------------------------------------------mapAuthorization == null:" + true
// + "--------------------------------------------");
//
// } else {
// System.out.println("--------------------------------------------mapAuthorization == null:" + false
// + "--------------------------------------------");
//
// }
// // mapAuthorization=null;
// if (mapAuthorization == null) {
//
// // 緩存為空時,重新調用api接口重置緩存
// doAuthorization = false;
// HttpUtils.RemoteAuthorizationCheck();
// mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE, AUTHORIZATIONCACHEKEY);
// doAuthorization = true;
// }
// System.out.println("--------------------------------------------mapAuthorization:" + mapAuthorization
// + "--------------------------------------------");
//
// if (mapAuthorization.get(sdate) == null) {
// // 緩存為空時,重新調用api接口重置緩存
// doAuthorization = false;
// HttpUtils.RemoteAuthorizationCheck();
// mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE, AUTHORIZATIONCACHEKEY);
// doAuthorization = true;
// mapAuthorization = (HashMap<String, Boolean>) CacheUtils.get(AUTHORIZATIONCACHE, AUTHORIZATIONCACHEKEY);
// System.out.println("--------------------------------------------mapAuthorization22222:"
// + mapAuthorization + "--------------------------------------------");
//
// // 重置後如果仍為空,抛出錯誤
// if (mapAuthorization.get(sdate) == null) {
// throw new NullPointerException();
// }
// System.out.println("--------------------------------------------result:" + mapAuthorization.get(sdate)
// + "--------------------------------------------");
//
// } else {
// System.out.println("--------------------------------------------result2:" + mapAuthorization.get(sdate)
// + "--------------------------------------------");
//
// if (mapAuthorization.get(sdate) == false) {
// throw new NullPointerException();
// }
// }
// }
String value = map.get(key);
if (value == null) {
value = loader.getProperty(key);
map.put(key, value != null ? value : StringUtils.EMPTY);
}
return value;
}
/**
* 擷取管理端根路徑
*/
public static String getAdminPath() {
return getConfig("adminPath");
}
/**
* 擷取前端根路徑
*/
public static String getFrontPath() {
return getConfig("frontPath");
}
/**
* 擷取URL字尾
*/
public static String getUrlSuffix() {
return getConfig("urlSuffix");
}
/**
* 是否是示範模式,示範模式下不能修改使用者、角色、密碼、菜單、授權
*/
public static Boolean isDemoMode() {
String dm = getConfig("demoMode");
return "true".equals(dm) || "1".equals(dm);
}
/**
* 上傳伺服器IP
*/
public static String uploadUrl() {
String uploadUrl = getConfig("UPLOADURL");
return uploadUrl;
}
/**
* 在修改系統使用者和角色時是否同步到Activiti
*/
public static Boolean isSynActivitiIndetity() {
String dm = getConfig("activiti.isSynActivitiIndetity");
return "true".equals(dm) || "1".equals(dm);
}
/**
* 頁面擷取常量
*
* @see ${fns:getConst('YES')}
*/
public static Object getConst(String field) {
try {
return Global.class.getField(field).get(null);
} catch (Exception e) {
// 異常代表無配置,這裡什麼也不做
}
return null;
}
/**
* 擷取上傳檔案的根目錄
*
* @return
*/
public static String getUserfilesBaseDir() {
String dir = getConfig("userfiles.basedir");
if (StringUtils.isBlank(dir)) {
try {
dir = ServletContextFactory.getServletContext().getRealPath("/");
} catch (Exception e) {
return "";
}
}
if (!dir.endsWith("/")) {
dir += "/";
}
// System.out.println("userfiles.basedir: " + dir);
return dir;
}
/**
* 擷取工程路徑
*
* @return
*/
public static String getProjectPath() {
// 如果配置了工程路徑,則直接傳回,否則自動擷取。
String projectPath = Global.getConfig("projectPath");
if (StringUtils.isNotBlank(projectPath)) {
return projectPath;
}
try {
File file = new DefaultResourceLoader().getResource("").getFile();
if (file != null) {
while (true) {
File f = new File(file.getPath() + File.separator + "src" + File.separator + "main");
if (f == null || f.exists()) {
break;
}
if (file.getParentFile() != null) {
file = file.getParentFile();
} else {
break;
}
}
projectPath = file.toString();
}
} catch (IOException e) {
e.printStackTrace();
}
return projectPath;
}
/**
* 擷取根目錄路徑
*
* @return
*/
public static String getDirPath() {
String projectPath = getProjectPath();
Properties prop = System.getProperties();
String os = prop.getProperty("os.name");
if (os.startsWith("win") || os.startsWith("Win"))
projectPath = projectPath.split(":")[0].toString() + ":\\userFiles\\";
else
projectPath = "/home/userFiles/";
return projectPath;
}
/**
* 擷取項目盤符位址
*
* @return
*/
public static String getPubEnclosureDirPath() {
String projectPath = HttpUtils.getPubEnclosureDirPath();
return projectPath;
}
/**
* 擷取項目名稱
*
*
*/
public static String getProjectName() {
String ProjectName = "";
Gson gson = new Gson();
String param = "";
String json = "";
try {
json = HttpUtils.doPost("sys/dictInterface/findBaseConfig", param);
} catch (Exception e) {
e.printStackTrace();
}
SysBase result = null;
try {
result = gson.fromJson(json, new TypeToken<SysBase>() {
}.getType());
} catch (Exception e) {
// TODO: handle exception
}
ProjectName = result.getProjectname().trim();
return ProjectName;
}
/**
* 擷取開發公司名稱
*
*
*/
public static String getCompanyName() {
String CompanyName = "";
Gson gson = new Gson();
String param = "";
String json = "";
try {
json = HttpUtils.doPost("sys/dictInterface/findBaseConfig", param);
} catch (Exception e) {
e.printStackTrace();
}
SysBase result = null;
try {
result = gson.fromJson(json, new TypeToken<SysBase>() {
}.getType());
} catch (Exception e) {
// TODO: handle exception
}
CompanyName = result.getCompanyname().trim();
return CompanyName;
}
/**
* 擷取是否可以從網盤選擇檔案
*
*
*/
public static SysBase getSysBase() {
Gson gson = new Gson();
String param = "";
String json = "";
try {
json = HttpUtils.doPost("sys/dictInterface/findBaseConfig", param);
} catch (Exception e) {
e.printStackTrace();
}
SysBase result = null;
try {
result = gson.fromJson(json, new TypeToken<SysBase>() {
}.getType());
} catch (Exception e) {
// TODO: handle exception
}
return result;
}
/**
* 寫入properties資訊
*
* @param key
* 名稱
* @param value
* 值
*/
public static void modifyConfig(String key, String value) {
try {
// 從輸入流中讀取屬性清單(鍵和元素對)
Properties prop = getProperties();
prop.setProperty(key, value);
String path = Global.class.getResource("/runyu.properties").getPath();
FileOutputStream outputFile = new FileOutputStream(path);
prop.store(outputFile, "modify");
outputFile.close();
outputFile.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 傳回 Properties
*
* @param fileName
* 檔案名 (注意:加載的是src下的檔案,如果在某個包下.請把包名加上)
* @param
* @return
*/
public static Properties getProperties() {
Properties prop = new Properties();
try {
Reader reader = Resources.getResourceAsReader("/runyu.properties");
prop.load(reader);
} catch (Exception e) {
return null;
}
return prop;
}
}
4、在jsp頁面或js中使用自定義的表達式函數fns: