将功能导出到TLD

时间:2011-11-27 06:40:48

标签: jsp taglib

我想将此功能导出到我的custom-functions.tld文件:

package com.site.vo;

public class Utils {
    public static String concat(String... values) {
        String out = "";

        for (String value : values) {
            out.concat(value);
        }

        return out;
    }
}

这是我的custom-functions-tld文件:

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">
<tlib-version>2.0</tlib-version>
<uri>/WEB-INF/custom-functions.tld</uri>
 <function>
  <description>Concatenate strings</description>
  <name>concat</name>
  <function-class>com.site.vo.Utils</function-class>
  <function-signature>java.lang.String concat(java.lang.String...)</function-signature>
 </function>
</taglib>

function-signature没有用,我得到了以下例外:

org.apache.jasper.JasperException: The class java.lang.String... specified in the method signature in TLD for the function f:concat cannot be found. java.lang.String...

尝试java.lang.String[],但是那个只需要一个参数(列表,d哦!)。我正在寻找正确的函数签名来导出具有多个参数的函数。

提前谢谢!

1 个答案:

答案 0 :(得分:5)

您应该尝试迁移到Java EE 6.然后您可以使用新的Unified Expression Language,从而避免创建自己的taglib的噩梦。

它允许您直接调用已定义bean的方法。