jstl自定义函数的使用

转载自:https://blog.csdn.net/nethackatschool/article/details/47082469

由于本人之前并没有接触过jstl标签,说来也可笑,之前一直使用struts2标签。最近项目用到jstl,所以做些记录方便以后自己查看。

jstl的强大原因之一我认为就是他的自定义函数,我们可以在前端页面直接就调用了java后台的一些常用方法,这一点真是让我爱不释手好吗。废话不多说,接下来具体看看如何使用jstl的自定义函数。

首先jstl的jar包肯定是要导的,在这就不啰嗦了。

使用jstl自定义函数要做到以下几点:

1.定义的方法必须是public的并且是static的;

2.定义相应的tld文件在WEB-INF目录或其子目录下;

3.定义相应的自定义函数库<%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %>。

具体示例代码如下:

fns.tld文件

 

 
  1. <?xml version="1.0" encoding="UTF-8" ?>

  2.  
  3. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"

  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

  6. version="2.0">

  7.  
  8. <description>JSTL 1.1 functions library</description>

  9. <display-name>JSTL functions sys</display-name>

  10. <tlib-version>1.1</tlib-version>

  11. <short-name>fns</short-name>

  12. <uri>http://java.sun.com/jsp/jstl/functionss</uri>

  13.  
  14. <function>

  15. <description>获取管理路径</description>

  16. <name>getAdminPath</name>

  17. <function-class>com.gisquest.djgx.common.config.Global</function-class>

  18. <function-signature>java.lang.String getAdminPath()</function-signature>

  19. <example>${fns:getAdminPath()}</example>

  20. </function>

  21. <function>

  22. <description>获取网站路径</description>

  23. <name>getFrontPath</name>

  24. <function-class>com.gisquest.djgx.common.config.Global</function-class>

  25. <function-signature>java.lang.String getFrontPath()</function-signature>

  26. <example>${fns:getFrontPath()}</example>

  27. </function>

  28. <function>

  29. <description>获取网站URL后缀</description>

  30. <name>getUrlSuffix</name>

  31. <function-class>com.gisquest.djgx.common.config.Global</function-class>

  32. <function-signature>java.lang.String getUrlSuffix()</function-signature>

  33. <example>${fns:getUrlSuffix()}</example>

  34. </function>

  35. <function>

  36. <description>获取配置</description>

  37. <name>getConfig</name>

  38. <function-class>com.gisquest.djgx.common.config.Global</function-class>

  39. <function-signature>java.lang.String getConfig(java.lang.String)</function-signature>

  40. <example>${fns:getConfig(key)}</example>

  41. </function>

  42. <function>

  43. <description>获取常量</description>

  44. <name>getConst</name>

  45. <function-class>com.gisquest.djgx.common.config.Global</function-class>

  46. <function-signature>java.lang.Object getConst(java.lang.String)</function-signature>

  47. <example>${fns:getConst(key)}</example>

  48. </function>

  49.  
  50. <!-- UserUtils -->

  51. <function>

  52. <description>获取当前用户对象</description>

  53. <name>getUser</name>

  54. <function-class>com.gisquest.djgx.modules.sys.utils.UserUtils</function-class>

  55. <function-signature>com.gisquest.djgx.modules.sys.entity.User getUser()</function-signature>

  56. <example>${fns:getUser()}</example>

  57. </function>

  58. <function>

  59. <description>根据ID获得用户对象</description>

  60. <name>getUserById</name>

  61. <function-class>com.gisquest.djgx.modules.sys.utils.UserUtils</function-class>

  62. <function-signature>com.gisquest.djgx.modules.sys.entity.User getUserById(java.lang.String)</function-signature>

  63. <example>${fns:getUserById(id)}</example>

  64. </function>

  65.  
  66. <function>

  67. <description>获取授权用户信息</description>

  68. <name>getPrincipal</name>

  69. <function-class>com.gisquest.djgx.modules.sys.utils.UserUtils</function-class>

  70. <function-signature>com.gisquest.djgx.modules.sys.security.SystemAuthorizingRealm.Principal getPrincipal()</function-signature>

  71. <example>${fns:getPrincipal()}</example>

  72. </function>

  73.  
  74. <function>

  75. <description>获取当前用户的菜单对象列表</description>

  76. <name>getMenuList</name>

  77. <function-class>com.gisquest.djgx.modules.sys.utils.UserUtils</function-class>

  78. <function-signature>java.util.List getMenuList()</function-signature>

  79. <example>${fns:getMenuList()}</example>

  80. </function>

  81.  
  82. <function>

  83. <description>获取当前用户的区域对象列表</description>

  84. <name>getAreaList</name>

  85. <function-class>com.gisquest.djgx.modules.sys.utils.UserUtils</function-class>

  86. <function-signature>java.util.List getAreaList()</function-signature>

  87. <example>${fns:getAreaList()}</example>

  88. </function>

  89.  
  90. <function>

  91. <description>获取当前用户的部门对象列表</description>

  92. <name>getOfficeList</name>

  93. <function-class>com.gisquest.djgx.modules.sys.utils.UserUtils</function-class>

  94. <function-signature>java.util.List getOfficeList()</function-signature>

  95. <example>${fns:getOfficeList()}</example>

  96. </function>

  97.  
  98. <function>

  99. <description>获取当前用户缓存</description>

  100. <name>getCache</name>

  101. <function-class>com.gisquest.djgx.modules.sys.utils.UserUtils</function-class>

  102. <function-signature>java.lang.Object getCache(java.lang.String, java.lang.Object)</function-signature>

  103. <example>${fns:getCache(cacheName, defaultValue)}</example>

  104. </function>

  105.  
  106. <!-- DictUtils -->

  107. <function>

  108. <description>获取字典标签</description>

  109. <name>getDictLabel</name>

  110. <function-class>com.gisquest.djgx.modules.sys.utils.DictUtils</function-class>

  111. <function-signature>java.lang.String getDictLabel(java.lang.String, java.lang.String, java.lang.String)</function-signature>

  112. <example>${fns:getDictLabel(value, type, defaultValue)}</example>

  113. </function>

  114.  
  115. <function>

  116. <description>获取字典标签(多个)</description>

  117. <name>getDictLabels</name>

  118. <function-class>com.gisquest.djgx.modules.sys.utils.DictUtils</function-class>

  119. <function-signature>java.lang.String getDictLabels(java.lang.String, java.lang.String, java.lang.String)</function-signature>

  120. <example>${fns:getDictLabels(values, type, defaultValue)}</example>

  121. </function>

  122.  
  123. <function>

  124. <description>获取字典值</description>

  125. <name>getDictValue</name>

  126. <function-class>com.gisquest.djgx.modules.sys.utils.DictUtils</function-class>

  127. <function-signature>java.lang.String getDictValue(java.lang.String, java.lang.String, java.lang.String)</function-signature>

  128. <example>${fns:getDictValue(label, type, defaultValue)}</example>

  129. </function>

  130.  
  131. <function>

  132. <description>获取字典对象列表</description>

  133. <name>getDictList</name>

  134. <function-class>com.gisquest.djgx.modules.sys.utils.DictUtils</function-class>

  135. <function-signature>java.util.List getDictList(java.lang.String)</function-signature>

  136. <example>${fns:getDictList(type)}</example>

  137. </function>

  138.  
  139. <!-- Encodes -->

  140. <function>

  141. <description>URL编码</description>

  142. <name>urlEncode</name>

  143. <function-class>com.gisquest.djgx.common.utils.Encodes</function-class>

  144. <function-signature>java.lang.String urlEncode(java.lang.String)</function-signature>

  145. <example>${fns:urlEncode(part)}</example>

  146. </function>

  147. <function>

  148. <description>URL解码</description>

  149. <name>urlDecode</name>

  150. <function-class>com.gisquest.djgx.common.utils.Encodes</function-class>

  151. <function-signature>java.lang.String urlDecode(java.lang.String)</function-signature>

  152. <example>${fns:urlDecode(part)}</example>

  153. </function>

  154. <function>

  155. <description>HTML编码</description>

  156. <name>escapeHtml</name>

  157. <function-class>com.gisquest.djgx.common.utils.Encodes</function-class>

  158. <function-signature>java.lang.String escapeHtml(java.lang.String)</function-signature>

  159. <example>${fns:escapeHtml(html)}</example>

  160. </function>

  161. <function>

  162. <description>HTML解码</description>

  163. <name>unescapeHtml</name>

  164. <function-class>com.gisquest.djgx.common.utils.Encodes</function-class>

  165. <function-signature>java.lang.String unescapeHtml(java.lang.String)</function-signature>

  166. <example>${fns:unescapeHtml(html)}</example>

  167. </function>

  168.  
  169. <!-- StringUtils -->

  170. <function>

  171. <description>从后边开始截取字符串</description>

  172. <name>substringAfterLast</name>

  173. <function-class>org.apache.commons.lang3.StringUtils</function-class>

  174. <function-signature>java.lang.String substringAfterLast(java.lang.String, java.lang.String)</function-signature>

  175. <example>${fns:substringAfterLast(str,separator)}</example>

  176. </function>

  177. <function>

  178. <description>判断字符串是否以某某开头</description>

  179. <name>startsWith</name>

  180. <function-class>org.apache.commons.lang3.StringUtils</function-class>

  181. <function-signature>boolean startsWith(java.lang.CharSequence, java.lang.CharSequence)</function-signature>

  182. <example>${fns:startsWith(str,prefix)}</example>

  183. </function>

  184. <function>

  185. <description>判断字符串是否以某某结尾</description>

  186. <name>endsWith</name>

  187. <function-class>org.apache.commons.lang3.StringUtils</function-class>

  188. <function-signature>boolean endsWith(java.lang.CharSequence, java.lang.CharSequence)</function-signature>

  189. <example>${fns:endsWith(str,suffix)}</example>

  190. </function>

  191. <function>

  192. <description>缩写字符串,超过最大宽度用“...”表示</description>

  193. <name>abbr</name>

  194. <function-class>com.gisquest.djgx.common.utils.StringUtils</function-class>

  195. <function-signature>java.lang.String abbr(java.lang.String, int)</function-signature>

  196. <example>${fns:abbr(str,length)}</example>

  197. </function>

  198. <function>

  199. <description>替换掉HTML标签后缩写字符串,超过最大宽度用“...”表示</description>

  200. <name>rabbr</name>

  201. <function-class>com.gisquest.djgx.common.utils.StringUtils</function-class>

  202. <function-signature>java.lang.String rabbr(java.lang.String, int)</function-signature>

  203. <example>${fns:rabbr(str,length)}</example>

  204. </function>

  205. <function>

  206. <description>替换掉HTML标签</description>

  207. <name>replaceHtml</name>

  208. <function-class>com.gisquest.djgx.common.utils.StringUtils</function-class>

  209. <function-signature>java.lang.String replaceHtml(java.lang.String)</function-signature>

  210. <example>${fns:replaceHtml(html)}</example>

  211. </function>

  212.  
  213. <function>

  214. <description>转换为JS获取对象值,生成三目运算返回结果。</description>

  215. <name>jsGetVal</name>

  216. <function-class>com.gisquest.djgx.common.utils.StringUtils</function-class>

  217. <function-signature>java.lang.String jsGetVal(java.lang.String)</function-signature>

  218. <example>${fns:jsGetVal('row.user.id')} 返回:!row?'':!row.user?'':!row.user.id?'':row.user.id</example>

  219. </function>

  220.  
  221. <!-- DateUtils -->

  222. <function>

  223. <description>获取当前日期</description>

  224. <name>getDate</name>

  225. <function-class>com.gisquest.djgx.common.utils.DateUtils</function-class>

  226. <function-signature>java.lang.String getDate(java.lang.String)</function-signature>

  227. <example>${fns:getDate(pattern)}</example>

  228. </function>

  229. <function>

  230. <description>获取过去的天数</description>

  231. <name>pastDays</name>

  232. <function-class>com.gisquest.djgx.common.utils.DateUtils</function-class>

  233. <function-signature>long pastDays(java.util.Date)</function-signature>

  234. <example>${fns:pastDays(date)}</example>

  235. </function>

  236.  
  237. <!-- JsonMapper -->

  238. <function>

  239. <description>对象转换JSON字符串</description>

  240. <name>toJson</name>

  241. <function-class>com.gisquest.djgx.common.mapper.JsonMapper</function-class>

  242. <function-signature>java.lang.String toJsonString(java.lang.Object)</function-signature>

  243. <example>${fns:toJson(object)}</example>

  244. </function>

  245. </taglib>

 

相应后台工具代码:

 

 

 
  1. package com.gisquest.djgx.modules.sys.utils;

  2.  
  3. import java.util.List;

  4. import java.util.Map;

  5.  
  6. import org.apache.commons.lang3.StringUtils;

  7.  
  8. import com.gisquest.djgx.common.utils.CacheUtils;

  9. import com.gisquest.djgx.common.utils.SpringContextHolder;

  10. import com.gisquest.djgx.modules.sys.dao.DictDao;

  11. import com.gisquest.djgx.modules.sys.entity.Dict;

  12. import com.google.common.collect.Lists;

  13. import com.google.common.collect.Maps;

  14.  
  15. /**

  16. * 字典工具类

  17. * @author Administrator

  18. * @version 2013-5-29

  19. */

  20. public class DictUtils {

  21.  
  22. private static DictDao dictDao = SpringContextHolder.getBean(DictDao.class);

  23.  
  24. public static final String CACHE_DICT_MAP = "dictMap";

  25.  
  26. public static String getDictLabel(String value, String type, String defaultValue){

  27. if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(value)){

  28. for (Dict dict : getDictList(type)){

  29. if (type.equals(dict.getType()) && value.equals(dict.getValue())){

  30. return dict.getLabel();

  31. }

  32. }

  33. }

  34. return defaultValue;

  35. }

  36.  
  37. public static String getDictLabels(String values, String type, String defaultValue){

  38. if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(values)){

  39. List<String> valueList = Lists.newArrayList();

  40. for (String value : StringUtils.split(values, ",")){

  41. valueList.add(getDictLabel(value, type, defaultValue));

  42. }

  43. return StringUtils.join(valueList, ",");

  44. }

  45. return defaultValue;

  46. }

  47.  
  48. public static String getDictValue(String label, String type, String defaultLabel){

  49. if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(label)){

  50. for (Dict dict : getDictList(type)){

  51. if (type.equals(dict.getType()) && label.equals(dict.getLabel())){

  52. return dict.getValue();

  53. }

  54. }

  55. }

  56. return defaultLabel;

  57. }

  58.  
  59. public static List<Dict> getDictList(String type){

  60. @SuppressWarnings("unchecked")

  61. Map<String, List<Dict>> dictMap = (Map<String, List<Dict>>)CacheUtils.get(CACHE_DICT_MAP);

  62. if (dictMap == null){

  63. dictMap = Maps.newHashMap();

  64. for (Dict dict : dictDao.findAllList()){

  65. List<Dict> dictList = dictMap.get(dict.getType());

  66. if (dictList != null){

  67. dictList.add(dict);

  68. }else{

  69. dictMap.put(dict.getType(), Lists.newArrayList(dict));

  70. }

  71. }

  72. CacheUtils.put(CACHE_DICT_MAP, dictMap);

  73. }

  74.  
  75. List<Dict> dictList = dictMap.get(type);

  76. if (dictList == null){

  77. dictList = Lists.newArrayList();

  78. }

  79. return dictList;

  80. }

  81.  
  82. }

前台调用:

 

 
  1. <div class="control-group">

  2. <label class="control-label" for="flag">定时类型:</label>

  3. <div class="controls">

  4. <form:select path="flag" onchange="updateClass()">

  5. <form:options items="${fns:getDictList('696d7f3d414940b79aa962b8c30f989f')}" itemLabel="label" itemValue="value" htmlEscape="false"/>

  6. </form:select>

  7. </div>

  8. </div>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值