カスタムel式


JSPページでは、従来のJavaフラグメント言語の代わりにラベルライブラリを使用してページの表示ロジックを実装することは新しい技術ではありませんが、カスタムラベルによって重複定義や非標準的な実装が容易になります.これに鑑みて、JSTLが出てきました(JSP Standard Tag Library).多くのJSPページロジックは、ラベルライブラリとして実装されたJSTLテクノロジーを提供しています.Sun社Java仕様規格のJSTLはapache jakartaによって管理されています.オープンソースの標準テクノロジーとして、常に完璧に機能しています.JSTLのリリースパッケージには、Standard-1.0 Taglib、Standard-1.1 Tの2つのバージョンがあります.Aglibは、使用時に異なります.ELはJavaScriptスクリプト言語からヒントを得た表現言語であり,JavaScriptマルチタイプ変換の無関係性の特徴を参考にしている.ELを使用してscopeからパラメータを取得する場合、自動的にタイプを変換できるので、タイプに対する制限はより緩やかになります.
sun社が提供するel式では、何でもできるわけではありません.例えば、計算もできますが、方法を書くことはできません.一つの方法や他の何かを使いたい場合は、EL式を持っていてもできない場合はどうすればいいですか.el式はカスタマイズできるので、次はel式をカスタマイズする方法について説明します.
1.jspページで呼び出すためのクラスを書く必要があります.このクラスは静的でなければなりません.次のようになります.
package com.exam.jpart.tag.el;

import java.util.Map;
import java.util.Set;

/**
 * 
 * @author wind'
 * 
 * @date 2009-9-1
 * 
 * @file com.exam.jpart.tag.el/MapEL.java
 * 
 */
public class MapEL {

	/**
	 * 
	 * @param map
	 *               Map  
	 * @return Map    
	 */
	@SuppressWarnings("unchecked")
	public static Set keySet(Map map) {
		if (map == null) {
			return null;
		}
		return map.keySet();
	}

	/**
	 * 
	 * @param map
	 *               Map  
	 * @param key
	 *               Map    key
	 * @return   Map      
	 */
	@SuppressWarnings("unchecked")
	public static Object get(Map map, String key) {
		if (map == null || key == null || "".equals(key)) {
			return null;
		}
		return key;
	}

}

 
皆さんは上のこの类がとても简単で、いくつかの简単なものを実现することができて、しかしここまで、私はみんながまた闻くと思って、これでいいですか、それでは私はインタフェースの上でどのようにこの方法を呼び出して、まさかまた<%%>のこのような小さい脚本を使いますか.
答え:no.
次に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 web-jsptaglibrary_2_0.xsd"
	version="2.0">

	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>w</shortname>
	<uri>
		http://zyongking.iteye.com/admin
	</uri>
	<info>   '</info>

	<function>
		<name>keySet</name>
		<function-class>
			com.exam.jpart.tag.el.MapEL
		</function-class>
		<function-signature>
			java.util.Set keySet(java.util.Map)
		</function-signature>
		<description>  Map     ,    Set  </description>
	</function>

	<function>
		<name>get</name>
		<function-class>
			com.exam.jpart.tag.el.MapEL
		</function-class>
		<function-signature>
			java.lang.Object
			get(java.util.Map,java.lang.String)
		</function-signature>
		<description>  Map       ,    Object  
		</description>
	</function>

</taglib>

以上のような書類を書くだけでいいのですが、ここでは書類についてあまり説明しないので、とても簡単で、みんなが見るとわかるはずです.
次にインタフェース上で呼び出す.
次のように呼び出します.
<%@ taglibprefix="w"uri="/WEBINF/classes/com/exam/jpart/tag/el/w.tld" %>//      ,           ,     ,          uri   ,         uri,                  uri

${w:keySet(sessionScope.map)}//  map     session