apache commons lang3 stringutils taglib

Я хотел бы использовать StringUtils.abbreviate() внутри тега jstl, есть ли для этого местоположение taglib?

Я искал сайт общего пользования и в Интернете, но не смог найти пример. Есть ли общий способ найти местоположения taglib также, возможно, в стандартном месте дерева Javadoc??

Спасибо! Nic

3 ответа

Решение

Nic,

Зачастую нет предопределенного тега, который можно использовать в методах apache util, но легко добавить свои собственные специальные определения тегов, чтобы они указывали на нужный метод. Например, добавьте локальное определение taglib в ваш файл web.xml:

<jsp-config> 
    <taglib> 
        <taglib-uri>mytags</taglib-uri> 
        <taglib-location>/WEB-INF/jsp/mytaglib.tld</taglib-location> 
    </taglib> 
</jsp-config>

Ваш файл mytaglib.tld будет выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tlib-version>1.0</tlib-version>
    <function>
        <description>Exposes the abbreviate() function from Apache StringUtils</description>
        <name>abbreviate</name>
        <function-class>org.apache.commons.lang.StringUtils</function-class>
        <function-signature>java.lang.String abbreviate(java.lang.String,
                            int)</function-signature>
    </function>
</taglib>

В вашем JSP вы можете использовать новый пользовательский тег:

<%@ taglib prefix="mytags" uri="mytags" %>
...
<c:out value="${mytags:abbreviate(myString, 5)"/>

Это должно сделать это для вас. Для получения дополнительной информации о пользовательских тегах вы можете прочитать здесь: http://docs.oracle.com/javaee/5/tutorial/doc/bnalj.html

Я написал один для общего достояния 2.4.

https://github.com/hussachai/commons-lang-taglibs

Кстати, вы можете использовать его как шаблон для 3.0.

Изначально я тоже думал о том, чтобы пойти с пользовательским taglib. Спасибо за пост, он дал мне эту идею. Создание экземпляра StringUtils само по себе прекрасно работало. Даже мысли звонки статичны. Я полагаю, вы могли бы обернуть его в тег с двумя строками, если хотите.

Пример ниже выведет следующее: Теперь...

<%@ tag import="org.apache.commons.lang3.StringUtils" %>
<jsp:useBean id="StringUtils" class="org.apache.commons.lang3.StringUtils" />
<c:out value="${StringUtils.abbreviate('Now is the time for all good', 8) }" />

Обратите внимание, что оператор импорта тегов является необязательным. Приведенный выше код работает для меня с или без него.

Другие вопросы по тегам