5

我想在 jstl 标记中使用 StringUtils.abbreviate(),是否有一个标记库位置?

我搜索了公共站点和网络,但找不到示例。是否还有一种常见的方法来查找 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-lang 2.4 写了一个。

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

顺便说一句,您可以将其用作 3.0 的模板。

于 2013-04-10T23:22:13.673 回答
2

I was initially thinking of going with a custom taglib also. Thanks for the post, it gave me this idea. Creating an instance of StringUtils worked just fine on it's own. Even thought the calls are static. I suppose you could wrap it into a two-liner tag if you wanted to.

The example below will output the following: Now is the t...

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

Note that the tag import statement seems to be optional. The above code works for me with or without it.

于 2018-07-13T14:25:07.620 回答