Java 自定義tld標籤庫
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> ... <!-- zip resources --> <filter> <filter-name>GZIPFilter</filter-name> <filter-class>com.tacitknowledge.filters.gzipfilter.GZIPFilter</filter-class> </filter> <filter-mapping> <filter-name>GZIPFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> <filter-mapping> <filter-name>GZIPFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping> <!-- self defi tag --> <jsp-config> <taglib> <taglib-uri>http://www.xxx.com.cn/project/functions</taglib-uri> <taglib-location>/WEB-INF/tld/xxx-html.tld</taglib-location> </taglib> </jsp-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>500</error-code> <location>/pages/error.jsp</location> </error-page> <error-page> <error-code>503</error-code> <location>/pages/error.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/pages/error.jsp</location> </error-page> ... </web-app>
在WEB-INF下面新建tld目錄
新增
xxx-html.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/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" > <tlib-version>1.0</tlib-version> <short-name>wapHtml</short-name> <uri>http://www.xxx.com.cn/project/functions</uri> <function> <name> replaceSpecialChar </name> <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class> <function-signature>java.lang.String replaceSpecialChar(java.lang.String,java.lang.String,java.lang.String)</function-signature> </function> <function> <name> splitChar </name> <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class> <function-signature>java.lang.String[] splitChar(java.lang.String,java.lang.String)</function-signature> </function> <function> <name> cutStr </name> <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class> <function-signature>java.lang.String cutStr(java.lang.String,java.lang.Integer)</function-signature> </function> <function> <name> cutStrExt </name> <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class> <function-signature>java.lang.String cutStrExt(java.lang.String,java.lang.Integer,java.lang.Integer,java.lang.String)</function-signature> </function> <function> <name> convertNumber </name> <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class> <function-signature>java.lang.String convertNumber(java.lang.String)</function-signature> </function> <function> <name> dateToStr </name> <function-class>com.paic.mall.util.tag.WapHtmlTag</function-class> <function-signature>java.lang.String dateToStr(java.util.Date,java.lang.String)</function-signature> </function> </taglib>
WapHtmlTag.java
public class WapHtmlTag { /** * 把sourceStr含有repChar的字元替換為destChar * @param sourceStr * @param oldChar * @param newChar * @return */ public static String replaceSpecialChar(String sourceStr, String oldChar, String newChar){ if(StringUtils.isEmpty(sourceStr)){ return ""; } sourceStr = sourceStr.toLowerCase(); sourceStr = sourceStr.replace(oldChar, newChar); return sourceStr; } /** * 分割字串,至少保持陣列長度有兩位 * @param sourceStr * @param split * @return */ public static String[] splitChar(String sourceStr, String split){ if(StringUtils.isEmpty(sourceStr)){ return new String[2]; } String[] array = sourceStr.split(split); if(null != array && array.length > 0){ if(array.length == 1){ String[] ay = new String[2]; ay[0] = array[0]; return ay; } return array; } return new String[2]; } /** * 擷取字串,如果不超過length,則返回原來字串 * @param sourceStr * @param length * @return */ public static String cutStr(String sourceStr, Integer length){ if(StringUtils.isEmpty(sourceStr)){ return ""; } int sourceLength = sourceStr.length(); if(sourceLength > length){ sourceStr = sourceStr.substring(0, length) + "..."; } return sourceStr; } /** * 擷取字串,如果不超過length,則返回原來字串 * @param sourceStr 原串 * @param startIndex 開始位置 * @param endIndex 結束位置 * @param subffix 字尾 * @return */ public static String cutStrExt(String sourceStr, Integer startIndex, Integer endIndex, String subffix){ if(StringUtils.isEmpty(sourceStr)){ return ""; } int sourceLength = sourceStr.length(); if(sourceLength <= startIndex){ return sourceStr; } int end = sourceLength - startIndex; if(end > endIndex){ sourceStr = sourceStr.substring(startIndex, endIndex) + subffix; }else{ sourceStr = sourceStr.substring(startIndex, sourceLength) + subffix; } return sourceStr; } /** * 數字轉換 * @param number 數字 * @return */ public static String convertNumber(String numberStr){ if(StringUtils.isEmpty(numberStr)){ return ""; } if(!StringUtils.isNumeric(numberStr)){ return ""; } double number = Double.parseDouble(numberStr); String str = ""; DecimalFormat df = new DecimalFormat("######0.00"); if(number >= 10000){ str = String.valueOf(df.format(Double.valueOf(number)/10000));//轉化為萬,儲存兩位小數 String strLeft = str.substring(0, str.indexOf("."));//小數點左邊 String strRight = str.substring(str.indexOf(".")+1, str.length());//小數點右邊 int minERight = Integer.parseInt(strRight); if(minERight <= 0){//判斷右邊小於0,則去掉右邊的兩位小數 str = strLeft; } return str; }else{ return numberStr; } } /** * 把時間型別轉化為String型別 * @param date * @return */ public static String dateToStr(Date date,String partn){ if(null == date){ return ""; } SimpleDateFormat sdf=new SimpleDateFormat(partn); String str=sdf.format(date); return str; } }
使用方法
xxx.jsp
<strong style="font-style: italic;"><</strong>%@ taglib prefix="waptag" uri="http://www.pingan.com.cn/jrqjd/functions" %>
<c:if test="${not empty lujinsuoList}">
<div class="content-block-title">陸金所理財產品(<i>${fn:length(lujinsuoList)}</i>)</div>
<div class="list-block">
<ul>
<c:forEach items="${lujinsuoList}" var="record" varStatus="item">
<li class="swipeout">
<label class="swipeout-content item-content label-checkbox">
<input type="checkbox" name="shop-cart-checkbox" class="shop-cart-checkbox" value="${record.idWapShoppingCart }">
<div class="item-media"><i class="icon icon-form-checkbox"></i></div>
<div class="ub-f1 ubox-v product-info">
<a class="link title-name" href="${waptag:splitChar(record.productUrl, 'mamc/')[1] }">${record.productName }</a>
<div class="title-number">${record.productCode }</div>
<div class="ubox title-value">
<span class="ub-f1">${waptag:replaceSpecialChar(record.productUniqueFeature, '%','<i>%</i>')}</span>
<span class="ub-f1">${waptag:splitChar(record.productIntroduce, '萬')[0]}<i>萬</i></span>
<span class="ub-f1">${waptag:splitChar(record.productIntroduce, '萬')[1]}</span>
</div>
<div class="ubox">
<div class="ub-f1">預期收益</div>
<div class="ub-f1">起購價</div>
<div class="ub-f1">起購期限</div>
</div>
</div>
<div class="ubox-v buy-info">
<a href="${ctx}/lujinsuo/yuyue/tianxie.do?${sessionScope.wapChaoshiUrlParams }&pid=${record.productId }" class="external ub-f1 ubox text-1 ub-ac">預約</a>
</div>
</label>
<div class="swipeout-actions-right">
<a href="#" class="swipeout-delete bg-red">刪除</a>
</div>
</li>
</c:forEach>
</ul>
</div>
</c:if>
相關推薦
Java 自定義tld標籤庫
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jav
使用tld檔案自定義jsp標籤庫
目錄 一,標籤庫描述檔案(tld檔案) 二,標籤處理類 三,在JSP頁面中使用自定義的標籤 四,舉個例子 通過Java的TagSupport類或者BodyTagSupport類,和配套的tld檔案,可以定義自己的jsp標籤。 TagSupport類和BodyTagSu
Java 自定義JDBC類庫
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql
java自定義標籤庫的開發
1. 建立實現了Tag介面(準確地說是 javax.servlet.jsp.tagext.Tag)的標籤處理程式類。 2. 建立一個 TLD 檔案。 3. 在標籤處理程式 Java 類中建立屬性。 4. 在 TLD 檔案中定義與標籤處理程式 Java 類中定義的屬性對應的屬性。 5. 在 TLD 檔案中
java 自定義標籤 許可權標籤 模仿shiro
二話不說,直接開幹。 新建 permission.tld 內容如下 <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
java netty socket庫和自定義C#socket庫利用protobuf進行通訊完整例項
之前的文章講述了socket通訊的一些基本知識,已經本人自定義的C#版本的socket、和java netty 庫的二次封裝,但是沒有真正的發表測試用例。 本文只是為了講解利用protobuf 進行C# 和 java的通訊。以及完整的例項程式碼 java 程式碼 svn 地址,本人開發工具是NetBean
springboot 自定義許可權標籤(tld),在freemarker引用
第一步:引入jar包 <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>
java自定義標籤異常
嚴重: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: /WEB-INF/pages/svg/doc-svg/index.jsp(198,5) According to TL
[Java]自定義Jar庫,Http簡單的Get和Post請求封裝
最近寫Android程式頻繁用到Http的Get和Post、請求,每次寫一個專案都要重新URL --> URLConnection實在是太麻煩,乾脆,自己封裝了一個。 分別處理Get和Post簡
Java自定義異常
trace tex logs fin rate cat java自定義異常 leg pan package cn.Douzi.Lab7_4; public class Triangle { int a, b, c; publ
Java自定義註解反射校驗數據
sda new out 格式 是否 本地 imp 使用範圍 數據類型 package com.annotations.ecargo; import java.lang.annotation.ElementType; import java.lang.annotati
[轉][Java]自定義標簽簡介
是否 沒有 override include file sch lang oca uri 作用:自定義標簽主要用於移除 jsp 頁面中的 java 代碼。 實現:需要完成以下兩個步驟: 編寫一個實現 Tag 接口的 Java 類,把頁面 java 代碼移到這個 java
java自定義註解
不包含 doc 1.2 color 子類 局部變量 ati 包含 ant Java註解是附加在代碼中的一些元信息,用於一些工具在編譯、運行時進行解析和使用,起到說明、配置的功能。註解不會也不能影響代碼的實際邏輯,僅僅起到輔助性的作用。包含在 java.lang.annot
Java自定義方法轉換前端提交的json字符串為JsonObject對象
eid test 提交 rac quest https std bject app 前端提交json字符串格式數據,Java後端通過自定義方法接收json字符串數據並轉換為JsonObject對象,代碼如下放到RequestData.Java類中: public stat
VS2017 Linux C++引用自定義的動態庫
++ -1 undefined mage 編譯運行 linux下 lin 套路 log 前一篇博客講了用系統庫libpthread.so的例子,只需要在項目屬性頁的[C++->命令行參數]和[鏈接器->命令行參數]中加上對應參數(比如-pthread)即可,然後
Java自定義類加載和ClassPath類加載器
訪問 pub 需要 委派 iat 定義 pro logs repl 1 自定義類加載器: 實現規則: 自定義類加載器,需要重寫findClass,然後通過調用loadClass進行類加載(loadClass通過遞歸實現類的雙親委派加載) package com.daxin
自定義數據庫連接工具類
數據庫 工具類 這是一個代碼質量比較高的Util。這裏寫了兩種,一種是原始的,一種是使用C3P0的。數據庫使用的是MySQL5.7。使用框架開發的時候根本不需要寫這些東西。其實框架也是這樣封裝的,但提供的功能會很豐富。這裏展現的是思路,供參考。功能齊全的Dao工具類DriverManager獲取連接的
ci框架自定義數據庫查詢名稱(方法)
cti 子目錄 ons pos 傳遞 sele 傳遞參數 ren 基礎 適合剛接觸PHP和ci框架的人,本人也是小白 原因:官方給的數據庫查詢方法可能不利於記憶使用,官方給的一些方法只能進行基礎查詢,每次復合查詢都需要拼接條件,自己定義定義方法直接調用方法即可 操作步驟:
java 自定義log類
comm deb null == bug void err getenv log4 目錄機構如下: package tpf.common; import org.apache.log4j.*; import java.io.File;
java自定義泛型 面試題:接收任意數組進行反轉
static class ava div 叠代器 類型 應用 system length 不用泛型只能操作某種類型進行反轉 代碼如下: package com.swift.fanxing; import org.junit.Test; public class Ren