2011-11-27 53 views
4

我想这个功能导出到我的custom-functions.tld文件:导出功能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[],但那个只需要一个参数(一个列表,哦!)。我正在寻找正确的函数签名来导出具有多个参数的函数。

预先感谢您!

回答

5

您应该尝试转移到Java EE 6.您可以使用新的Unified Expression Language,然后将自己从创建自己的taglib的恶梦中拯救出来。

它允许你直接调用你定义的bean上的方法。