jstlカスタムラベル
4693 ワード
jstlは以前、jspページで文字列を切り取るときにJava式を使っていましたが、jspページでJava式をたくさん使うのはよくないような気がします(その時は主にjstlラベルがどのように文字列を切り取るか分からないので、Java式しか使えませんでした).今日ネット上でいくつかの関連資料を探して、もとはjstlラベルは文字列を切り取ることができて、主に2つの方法があります:
一、jstl既存のラベルライブラリでの方法(fn関数)
注意:ラベルライブラリ<%@taglib uri="を参照することを忘れないでください.http://java.sun.com/jsp/jstl/core"prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions "prefix="fn"%>
二、カスタム関数
jstlが持参したラベルは、私たちのニーズを満たすことができない場合があります.この場合、カスタム関数を使用します.新しいクラスを作成し、必要なメソッドを定義します.
Javaコード:
tldファイルを再構築し、WEB-INFディレクトリの下に配置して構成します.
最後に呼び出しテストを行います.
[html]
<%@ page language="java"pageEncoding="gbk"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<%@ taglib uri="/WEB-INF/mytag.tld"prefix="myTag"%>
文字列「${str}」の長さは${myTag:getLen(str)}
文字列「${str}」前5文字:${myTag:substr(str,0,5)}
5を3で割った整数は、${myTag:chufa(5,3)}です.
一、jstl既存のラベルライブラリでの方法(fn関数)
<c:set var="testStr" value=" "
<c:choose>
<c:when test="${fn:length(testStr) > 10}">
<c:out value="${fn:substring(testStr, 0, 10)}......" />
</c:when>
<c:otherwise>
<c:out value="${testStr}" />
</c:otherwise>
</c:choose>
注意:ラベルライブラリ<%@taglib uri="を参照することを忘れないでください.http://java.sun.com/jsp/jstl/core"prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions "prefix="fn"%>
二、カスタム関数
jstlが持参したラベルは、私たちのニーズを満たすことができない場合があります.この場合、カスタム関数を使用します.新しいクラスを作成し、必要なメソッドを定義します.
Javaコード:
package com.uisk.util;
/**
* EL
*
*/
public class UFunction {
/**
*
*
* @param str
* @return int
*/
public static int getLen(String str) {
return str.length();
}
/**
*
*
* @param str
* @param start
* @param end
* @return String
*/
public static String substr(String str, int start, int end) {
return str.substring(start, end);
}
/**
*
*
* @param first
* @param second
* @return int
*/
public static int chufa(int first, int second) {
return first / second;
}
}
tldファイルを再構築し、WEB-INFディレクトリの下に配置して構成します.
<?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">
<tlib-version>1.0</tlib-version>
<short-name>len</short-name>
<function>
<description>calculate string length</description><!-- EL -->
<name>getLen</name><!-- EL -->
<function-class>com.cw.common.UFunction</function-class>
<function-signature>
int getLen(java.lang.String)
</function-signature>
<example>${len:getLen(str)}</example><!-- -->
</function>
<function>
<description>substring</description>
<name>substr</name>
<function-class>com.cw.common.UFunction</function-class>
<function-signature>
java.lang.String substr(java.lang.String,int,int)
</function-signature>
</function>
<function>
<description>chufa</description>
<name>chufa</name>
<function-class>com.cw.common.UFunction</function-class>
<function-signature>int chufa(int,int)</function-signature>
</function>
</taglib>
最後に呼び出しテストを行います.
[html]
<%@ page language="java"pageEncoding="gbk"%>
<%@ taglib uri="/WEB-INF/mytag.tld"prefix="myTag"%>