Добрый день. Часто, работая с jsf фрагментами и jspx страницами не хватает стандартной функциональности. JavaServer Pages Standard Tag Library (JSTL) представляет часть дополнительных функций:
JavaServer Pages Standard Tag Library (JSTL) — расширение спецификации JSP, добавляющее библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации
Тэги JSTL делятся на 5 категорий:
Основные тэги:
Тэги форматирования:
Работа с БД: <sql:query>, <sql:update>, <sql:setDataSource>, <sql:param>, <sql:dateParam>
XML тэги:
Работа со строками: <fn:contains>,<fn:containsIgnoreCase>,<fn:endsWith>,<fn:escapeXml>,<fn:indexOf>,<fn:join>,<fn:length>,<fn:replace>,<fn:split>,<fn:startWith>,<fn:substring>,<fn:substringAfter>,<fn:substringBefore>,<fn:toLowerCase>,<fn:toUpperCase>,<fn:trim>
Теперь подробней о каждом тэге:
<jsp:root
...
xmlns:c="http://java.sun.com/jsp/jstl/core"
...
>
<jsp:root
...
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
...
>
Теги форматирования JSTL используются для форматирования и отображения текста, даты, время, и чисел для многоязычных веб-сайтов. Я опишу тэги относящиеся только к форматированию
<jsp:root
>
<jsp:root
Пример использования jstl функций в jspx странице :
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view>
<af:document id="d1">
<af:form id="f1" usesUpload="true">
<c:set var="user" value="Misha"/>
<c:set var="summ" value="12345"/>
<c:out value="${user} "/>
<fmt:formatNumber type="number" maxIntegerDigits="3" value="${summ}"/>
<af:outputText value=" Длинна слова 'Инкапсуляция'= #{fn:length('Инкапсуляция')}" id="aot1"/>
</af:form>
</af:document>
</f:view>
</jsp:root>
Подробнее о JSTL можно прочитать по следующей ссылке:
http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm
JavaServer Pages Standard Tag Library (JSTL) — расширение спецификации JSP, добавляющее библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации
Тэги JSTL делятся на 5 категорий:
Основные тэги:
- Общего назначения: <c:out>, <c:set>, <c:remove>, <c:catch>
- Условия: <c:if>, <c:choose>, <c:when>, <c:otherwise>
- Относящиеся к URL: <c:import>, <c:url>, <c:redirect>, <c:param>
- Итерации: <c:forEach>, <c:forTokens>
Тэги форматирования:
- Интернационализация: <fmt:message>, <fmt:setLocale>, <fmt:bundle>, <fmt:setBundle>, <fmt:param>, <fmt:requestEncoding>
- Форматирование: <fmt:timeZone>, <fmt:setTimeZone>, <fmt:formatNumber>, <fmt:parseNumber>, <fmt:parseDate>
Работа с БД: <sql:query>, <sql:update>, <sql:setDataSource>, <sql:param>, <sql:dateParam>
XML тэги:
- Общие XML операции: <x:parse>, <x:out>, <x:set>
- XML-контроль: <x:if>, <x:choose>, <x:when>, <x:otherwise>, <x:forEach>
- Трансформации: <x:transform>, <x:param>
Работа со строками: <fn:contains>,<fn:containsIgnoreCase>,<fn:endsWith>,<fn:escapeXml>,<fn:indexOf>,<fn:join>,<fn:length>,<fn:replace>,<fn:split>,<fn:startWith>,<fn:substring>,<fn:substringAfter>,<fn:substringBefore>,<fn:toLowerCase>,<fn:toUpperCase>,<fn:trim>
Теперь подробней о каждом тэге:
Основные тэги.
Основные тэги подключаются при помощи строки в jsp:root:<jsp:root
...
xmlns:c="http://java.sun.com/jsp/jstl/core"
...
>
Тэг | Описание |
<c:out > | Вывод данных на экран. Параметры: value - значение, которое будет вычисляться и выводиться escapeXml- название переменной для хранения числа default - значение по умолчанию, если вычисляемое значение равно Null Пример: <c:out value='Данные' /> |
<c:set > | Задает значение переменной . value - значение, которое будет вычисляться var - название переменной для хранения scope - область видимости target - целевой объект, свойство которого будет установлено property - имя свойства, которое будет установлено Пример: <c:set var=”user” scope=”application” value=”Михаил” /> |
<c:remove > | Удаление переменной из scope. var - название удаляемой переменной scope - область видимости Пример : <c:remove var=”user” scope=”application” /> |
<c:catch> | Вылавливает исключения в теле тэга. var - название переменной в которой хранится исключение Пример : <c:catch var=”exception”> .... </c:catch> <c:if test=”%{exception!= null}”> There was an exception: %{exception.message} </c:if>
|
<c:if> | Тэг условия. Если условие в параметре test = true, то всё, что в теле тэга выполняется test- проверяет условие, при выполнении которого обрабатывается тело тэга var - название переменной в которой сохраняется результат условия scope - область видимости |
<c:choose> | Взаимоисключающий тэг условия |
<c:when> | Тэг используемый в <c:choose> для проверки условия : test- проверяет условие, при выполнении которого обрабатывается тело тэга Пример: <c:when test=”${user=='Михаил'}”> тело действия </c:when> |
<c:otherwise> | Тэг используемый в <c:choose> при не выполнении ни одного <c:when> |
<c:import> | Импортирует необходимую страницу: url - URL импортируемого ресурса context - имя контекста var - название переменной в которой сохраняется результат условия scope - область видимости charEncoding - символьная кодировка контента при вводе ресурса varReader - имя переменной для контента ресурса Пример: <c:import url=brest-santehstroy.by/index.html /> |
<c:forEach > | Цикл. : var - имя экспортируемой переменной varStatus - имя экспортируемой переменной, в которой хранится статус итерации items- коллекция элементов над которыми производятся итерации begin -используется, если не определен параметр items и указывает с какого индекса начинается цикл end- -используется, если не определен параметр items и указывает с каким индексом заканчивается цикл step - цикл будет обрабатывать номера итераций кратные step |
<c:forTokens> | Цикл похож на ранее приведенный forEach: совпадают многие атрибуты тега. Но ключевое отличие в том, что цикл идет по списку лексем, на которые была разбита строка Пример: <c:forTokens items="Water,Fire,Wind" delims="," var="name"> <c:out value="${name}"/><p> </c:forTokens> |
<c:param> | Добавляет параметры запроса к URL.Является вложенным действием для c:import, c:redirect и c:url Пример: <c:param name="user" value="Misha"/> |
<c:redirect > | Производит редирект на новый url url - URL перенаправляемого ресурса context - имя контекста Пример: <c:redirect url="http://www.oracle-adf.info"/> |
<c:url> | Создает URL с соответствующими параметрами записи value - URL который будет обрабатываться context - имя контекста var - название переменной для обработанного URL scope - область видимости Пример: <c:url value=”http://www.oracle-adf.info” var=”inputURL” > |
Тэги форматирования.
Тэги форматирования подключаются при помощи строки в jsp:root:<jsp:root
...
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
...
>
Теги форматирования JSTL используются для форматирования и отображения текста, даты, время, и чисел для многоязычных веб-сайтов. Я опишу тэги относящиеся только к форматированию
Тэг | Описание |
<fmt:formatNumber> | Выводит отформатированное число Параметры: value - значение, которое будет форматироваться type - тип NUMBER, CURRENCY, или PERCENT pattern - паттерн currencyCode - кода валюты (для type="currency") currencySymbol - символ валюты (для type = "currency") groupingUsed - групировка чисел (TRUE или FALSE) maxIntegerDigits - максимальное количество цифр выводимых в целой части minIntegerDigits - минимальное количество цифр выводимых в целой части maxFractionDigits - максимальное количество цифр выводимых в дробной части minFractionDigits - минимальное количество цифр выводимых в дробной части var - название переменной для хранения числа scope - область видимости Пример: <fmt:formatNumber type="number" maxIntegerDigits="3" value="${balance}" /> |
<fmt:parseNumber> | Синтаксический разбор строки в число, валюту или проценты value-значение, которое будет разбираться type -тип NUMBER, CURRENCY, или PERCENT parseLocale- Локаль integerOnly – определят должна ли разбираться синтаксически только целая часть значения pattern- паттерн timeZone – часовой пояс(для даты) var - название переменной для хранения числа scope - область видимости |
<fmt:formatDate> | Служит для форматирования даты и времени value-значение, которое будет форматироваться type -выбирается тип DATE (дата), TIME (время), or BOTH (вместе) parseLocale- Локаль dateStyle- стиль форматирования для дат. Следует семантике класса java.text.DateFormat ( применяется когда type равен time или both) timeStyle-стиль форматирования для времени. Следует семантике класса java.text.DateFormat ( применяется когда type равен time или both) pattern- паттерн timeZone – часовой пояс(для даты) var - название переменной для хранения значения scope - область видимости |
<fmt:parseDate> | Производит синтаксический анализ даты и времени value-значение, которое будет форматироваться type -выбирается тип DATE (дата), TIME (время), or BOTH (вместе) parseLocale- Локаль dateStyle- стиль форматирования для дат. Следует семантике класса java.text.DateFormat ( применяется когда type равен time или both) timeStyle-стиль форматирования для времени. Следует семантике класса java.text.DateFormat ( применяется когда type равен time или both)pattern- паттерн timeZone – часовой пояс(для даты) var - название переменной для хранения значения scope - область видимости |
SQL тэги
SQL тэги подключаются при помощи строки в jsp:root:
<jsp:root
...
xmlns:sql="http://java.sun.com/jsp/jstl/sql
...
>
Тэг
|
Описание
|
<sql:setDataSource> | Сохраняет информацию о данных источника в контекстными переменной, которая может быть использована в качестве параметра в других тэгах JSTL. driver - имя класса JDBC драйвера url - URL БД user- имя пользователя БД password - пароль пользователя БД dataSource - источник данных связанный с БД var - название переменной для хранения результата запроса scope - область видимости |
<sql:query> | Выполняет запрос к БД. Запрос можно писать в теле тэга или в параметре sql. dataSource-Источник данных связанный с БД maxRows- максимальное количество строк, которые будут включены в результат запроса startRows- первая строка в результате запроса var - название переменной для хранения результата запроса scope - область видимости |
<sql:update> | Выполняет SQL инструкции INSERT, UPDATE, DELETE. Так же можно выполнить инструкции языка, которые ничего не возвращают sql-инструкция SQL запроса dataSource-Источник данных связанный с БД var - название переменной для хранения результата запроса scope - область видимости |
<sql:param> | Устанавливает параметры в SQL инструкциях. Является вложенным действием для <sql:query> и <sql:update> value- значение параметра |
<sql:dateParam> | Устанавливает параметры в SQL инструкциях имеющих тип java.util.Date |
<sql:transaction > | Устанавливает транзакционный контекст для вложенных действий isolation-уровень изоляции транзакции(READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, или SERIALIZABLE) dataSource-Источник данных связанный с БД |
XML тэги
XML тэги подключаются при помощи строки в jsp:root:<jsp:root
...
xmlns:x="http://java.sun.com/jsp/jstl/xml"
...
>
Тэги
|
Описание
|
<x:out> | Вычисляет и выводит XPath - выражение и выводит результат вычисления в текущий объект JspWriter select - XPath - выражение которое будет обрабатываться escapeXml - определяет должны ли быть символы : <, > , &, ', " в результирующий строке конвертированы |
<x:parse> | Производит синтаксический разбор XML документа xml - исходный документ systemId- URI XML документа filter- фильтр который будет применяться для разбора XML документа var - название хранимой переменной для разбираемого документа scope - область видимости varDom - название хранимой переменной для разобранного документа scopeDom - область видимости varDom |
<x:set > | Вычисляет и сохраняет XPath - выражение select - XPath - выражение которое будет обрабатываться var - название хранимой переменной scope - область видимости |
<x:if > | Тэг условия для XPath выражений select - условие проверки var - название хранимой переменной в которой будет храниться результат условия scope - область видимости |
<x:forEach> | Цикл var - имя экспортируемой переменной select - XPath - выражение над которым будут проходить вычисления |
<x:choose> | Взаимоисключающий тэг условия |
<x:when > | Тэг используемый в <x:choose> для проверки условия |
<x:otherwise> | Тэг используемый в <x:choose> при не выполнении ни одного <x:when> |
<x:transform> | Применяет XSLT- трансформацию к XML - документу xml - исходный текст xml-документа который будет трансформирован xslt - трансформированная таблица в качестве объекта String, Reader или Source xmlSystemId- URI XML документа xsltSystemId- URI XSLT документа var - название хранимой переменной XML документа scope - область видимости result - Объект, который сохраняет или обрабатывает результат трансформации |
<x:param > | Устанавливает параметры трансформации. Вложенный тэг для <x:transform> name - имя параметра трансформации value - значение параметра |
JSTL функции
...
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
>
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
...
Функция
|
Описание
|
fn:contains(string, string ) | Возвращает логическое значение, показывающее, содержится ли второй параметр в первом. |
fn:containsIgnoreCase(string,string) | Не зависящая от регистра версия функции fn:contains() |
fn:endsWith(string, string) | Возвращает логическое значение, показывающее, заканчивается ли первый параметр строкой, содержащейся во втором параметре. |
fn:escapeXml(string) | Возвращает в параметре строку со всеми XML-символами, взятыми в коде сущности соответствующего ей XML-символа. |
fn:indexOf(string, string) | Возвращает целое число с указанием индекса начала второго параметра в первом параметре. Возвращает -1, если второй параметр не является подстрокой первого параметра |
fn:length(object) | Возвращает длину массива, размер коллекции или длину строки - в зависимости от типа параметра. |
fn:replace(string, string, string) | Возвращает строку, заменяя каждый экземпляр второго параметра в первом параметре третьим параметром. |
fn:startsWith(string, string) | Возвращает логическое значение, показывающее, начинается ли первый параметр с содержимого второго параметра. |
fn:substring(string, int, int) | Возвращает строку, содержащую подстроку первого параметра, начиная с индекса, указанного вторым параметром, и заканчивая непосредственно перед индексом, указанным третьим параметром. |
fn:substringAfter(string,string) | Возвращает строку, содержащую подстроку первого параметра, начиная с места первого вхождения второго параметра и до конца первого параметра. |
fn:substringBefore(string, string) | Возвращает строку, содержащую подстроку первого параметра, начиная с начала первого параметра и заканчивая непосредственно перед первым появлением второго параметра. |
fn:toLowerCase(string) | Возвращает строку в нижнем регистре |
fn:toUpperCase(string) | Возвращает строку в верхнем регистре |
fn:trim(string) | Возвращает строку с удалёнными пробелами в начали и конце строки |
fn:split(string, string) | Возвращает массив строк, содержащий элементы первого параметра, разделенные вторым параметром. |
fn:join(string[], string) | Возвращает строку, состоящую из элементов первого параметра, разделенных элементами второго параметра, используемыми в качестве разделителя. |
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view>
<af:document id="d1">
<af:form id="f1" usesUpload="true">
<c:set var="user" value="Misha"/>
<c:set var="summ" value="12345"/>
<c:out value="${user} "/>
<fmt:formatNumber type="number" maxIntegerDigits="3" value="${summ}"/>
<af:outputText value=" Длинна слова 'Инкапсуляция'= #{fn:length('Инкапсуляция')}" id="aot1"/>
</af:form>
</af:document>
</f:view>
</jsp:root>
Исходники приложения находятся на github: https://github.com/JealousyM/jstl-adf
Подробнее о JSTL можно прочитать по следующей ссылке:
http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm
Комментариев нет:
Отправить комментарий