jstl標籤和函數的定義

現在使用的許多開源框架中都提供了大量的標籤庫供我們使用.但是在實際應用中總會出現我們需要但暫時無法找到或者沒有提供的一些標籤.所以我們可以學習下一些jstl一些標籤和函數的定義.
對於自定義標籤的定義這裏有個博客已經詳細了講解了
[url]http://hanxin830311.iteye.com/blog/208486[/url]
這文章對於一些操作流程和解析都已經夠我們初步建立自己的標籤足夠使用了.
而自定義標籤我覺得使用的場景還沒自定義函數多.因爲函數可能是我們自己所寫的一些類的方法操作需要在頁面中操作之類的.我自己項目中也是使用到了自定義函數(簡單的使用)

[b]1.開發自己需要使用的自定義函數.[/b]


package com.jstl.function;
//隨便一個類.頂一個可以傳輸參數的方法就可以
public class HelloWordFunction {
public static String hello(String name) {//注意方法的定義.要是靜態的方法才能被jstl作爲標籤使用.
return "hello"+name;
}
}

[color=darkred]如何想使用spring賦值的話.只需要定義

private static AclService aclService;

不過get.set.注意不要使用static不然spring依賴注入將無效果.

spring只需要配置
<bean id="aclService" class="包路徑.AclServiceImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="helloWordFunction " class="HelloWordFunction路徑">
<property name="aclService" ref="aclService"></property>
</bean>
[/color]

[b]2.定義jstl函數標籤[/b]
在WEB-INF文件夾下編寫my.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">
<!--指定該標籤庫實現的版本,這是一個作爲標識的內部版本號,對程序沒有太大的用-->
<tlib-version>1.0</tlib-version>
<!--該標籤庫的默認短名,該名稱通常也沒有太大的用處。-->
<short-name>my</short-name>
<!--這個屬性非常重要,它指定該標籤庫的URI,相當於指定該標籤庫的唯一標識。如上斜體字代碼所示,JSP頁面中使用標籤庫時就是根據該URI屬性來定位標籤庫的-->
<uri>http://www.changtu.com/check/functions</uri>

<function>
<description>say hello world</description><!-- 對這個EL方法的描述 -->
<name>hello</name><!--EL頁面調用名字-->
<function-class>com.jstl.function.HelloWordFunction</function-class><!--指定標籤的處理類,指定了標籤由哪個Java類來處理。-->
<function-signature>java.lang.String hello(java.lang.String)</function-signature><!--指定EL頁面調用名字中實際調用的方法.指定處理類的實際方法.參數和回調函數要寫完整路徑-->
</function>
</taglib>


[b]3.在頁面中進行調用[/b]
因爲在使用中在頁面之間使用my.tld中uri的話.將有時候無法找到.所以在web.xml中需要配置下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
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_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- -->
<jsp-config>
<taglib>
<taglib-uri>http://www.changtu.com/myfunctions</taglib-uri>
<taglib-location>/WEB-INF/my.tld</taglib-location>
</taglib>
</jsp-config>

</web-app>

訪問頁面index.jsp

<%@ page pageEncoding="gb2312" contentType="text/html; charset=gb2312"%>
<%@ taglib prefix="my" uri="http://www.changtu.com/myfunctions" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>check</title>
</head>

<body>
<c:out value="${my:hello(world)}"></c:out>
</body>
</html>

[color=darkred]如果不配置web.xml的話.可以使用<%@ taglib prefix="my" uri="="/WEB-INF/myfunctions" %>[/color]

總結:對於這個函數的自定義在開發中使用起來配置起來也不難.在一些應用中操作起來非常方便.也使得開發可以更加靈活.減少Action中代碼量。對於自定義標籤和函數在定義中可以更加了解到各個框架標籤的意義.

下一篇文章可能寫dojo樹和dtree一些簡單使用.dwr的一些問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章