5

jstlタグ内でStringUtils.abbreviate()を使用したいのですが、このためのtaglibの場所はありますか?

コモンズサイトとウェブを検索しましたが、例が見つかりません。taglibの場所を見つける一般的な方法はありますか?おそらくjavadocツリーの標準的な場所にありますか?

ありがとう!ニック

4

3 に答える 3

4

ニック、

多くの場合、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を参照してください。

于 2012-12-26T22:28:41.600 に答える
2

commons-lang2.4用に作成しました。

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

ちなみに3.0のテンプレートとしても使えます。

于 2013-04-10T23:22:13.673 に答える
2

私は当初、カスタムtaglibも使用することを考えていました。投稿してくれてありがとう、それは私にこの考えを与えました。StringUtilsのインスタンスの作成は、それ自体で問題なく機能しました。呼び出しは静的ですが。必要に応じて、2ライナータグにラップできると思います。

以下の例では、次のように出力されます

<%@ 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) }" />

タグのインポートステートメントはオプションのように見えることに注意してください。上記のコードは、それがあってもなくても機能します。

于 2018-07-13T14:25:07.620 に答える