Последняя статья из цикла про библиотеку JSTL (Jakarta Standard Tag Library или ранее JavaServer Pages Standard Tag Library). Уже написал о core-тэгах и форматировании, теперь пришло время функций fn.
Чтобы начать пользоваться этой библиотекой, в файл pom.xml нужно добавить зависимость.
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
И на страницах jsp подключаем библиотеку следующим образом:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
Это позволит нам использовать теги функций, и все они будут начинаться с указанного префикса fn. Доступны следующие функции:
| boolean contains(String, String) | boolean containsIgnoreCase(String, String) |
| boolean endsWith(String, String) | String escapeXml(String, String) |
| int indexOf(String, String) | String join(String[], String) |
| int length(Object) | String replace(String, String, String) |
| String[] split(String, String) | boolean startsWith(String, String) |
| String substring(String, int, int) | String substringAfter(String, String) |
| String substringBefore(String, String) | String toLowerCase(String) |
| String toUpperCase(String) | String trim(String) |
В принципе, все функции и так легко понять, но давайте посмотрим на каждую из них:
fn:contains
Эта функция проверяет, содержит ли строка (первый аргумент) подстроку (второй аргумент) и возвращает булево значение.
${fn:contains('JavaScript','Java')}
fn:containsIgnoreCase
Эта функция проверяет, содержит ли строка (первый аргумент) подстроку (второй аргумент) и возвращает булево значение, но при проверке игнорирует регистр.
${fn:contains('JavaScript','java')}
fn:endsWith
Эта функция проверяет, заканчивается ли строка (первый аргумент) подстрокой (второй аргумент) и возвращает булево значение
${fn:endsWith('JavaScript','Script')}
fn:escapeXml
Эта функция помогает экранировать теги в строке, которые могут интерпретироваться, как xml-код.
<c:set var="str" value="<b>My String</b>"/>
Без escapeXml : ${str}
С escapeXml : ${fn:escapeXml(str)}
В первом случае вывод будет выделен жирным, во втором случае теги вся строка выведется как положено.
fn:indexOf
Эта функция возвращает индекс первого вхождения подстроки (второй аргумент) в строку (первый аргумент) или -1, если подстрока не найдена.
${fn:indexOf('Let's go','go')}
fn:split и fn:join
fn:split превращает строку (первый аргумент) в массив строк, разделяя её по сепаратору (второй аргумент).
А fn:join, наоборот, совмещает массив строк (первый аргумент) в строку, добавляя между ними сепаратор (второй аргумент)
<c:set var="str" value="address-of-my-page"/>
Строка : ${str} <br>
<c:set var="strSplit" value="${fn:split(str,'-')}"/>
<c:set var="strJoin" value="${fn:join(strSplit,' ')}"/>
Строка с пробелами : ${strJoin}
На выводе получаем:
Строка : address-of-my-page
Строка с пробелами : address of my page
fn:length
Эта функция возвращает длину строки или размер коллекции.
${fn:length('my string')}
fn:replace
Эта функция замещает в исходной строке (первый аргумент) подстроку (второй аргумент) на новую подстроку (третий аргумент).
${fn:replace('I don't give a fucking fuck!','uck','xxx')}
На выводе получим:
I don't give a fxxxing fxxx!
fn:startsWith
Эта функция проверяет, начинается ли строка (первый аргумент) с подстроки (второй аргумент) и возвращает булево значение.
${fn:startsWith('Hello World!','Goodbye')}
fn:substring
Эта функция возвращает подстроку от исходной строки (первый аргумент), от заданного индекса (второй аргумент) включительно до другого заданного индекса (третий аргумент) не включительно.
${fn:substring('www.mysite.ru',4,10)}
То есть берётся 10-4=6 символов, начиная с четвёртого. Не забываем, что нумерация символов начинается с нуля.
fn:substringAfter и fn:substringBefore
Эти функции возвращают подстроку от исходной строки (первый аргумент) после и до, соответственно, от найденной подстроки (второй аргумент). Если подстрока в строке не содержится, то вернётся пустая строка.
Подстрока до: ${fn:substringBefore('Cut this string',"this")} <br>
Подстрока после: ${fn:substringAfter('Cut this string',"this")} <br>
Подстрока не найдена: ${fn:substringAfter('Cut this string',"that")} <br>
На выводе получаем:
Подстрока до: Cut
Подстрока после: string
Подстрока не найдена:
fn:toLowerCase и fn:toUpperCase
Эти функции меняют регистр всех символов строки (единственный аргумент) на нижний и верхний, соответственно.
${fn:toLowerCase('ШёПоТ...')}
${fn:toUpperCase('кРиК!!!')}
fn:trim
Эта функция удаляет пробелы с обоих концов строки (единственный аргумент).
${fn:trim(' TOO MANY SPACES ')}
На этом всё. Пожалуй, самая простой из всех разделов jstl, потому что все функции довольно стандартные при работе со строками и имеют аналоги в большинстве языков программирования.
1 Comment