A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© せR3n、何必装纯 黑马帝   /  2011-11-12 22:20  /  1570 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

${zl:format("this a [0] ,so you  can [1] it ","pig","fff") }
我想写一个StringFormat 的函数,讲要格式化的字符通过数据或者可变参数传递进去
如果直接传数组,因为{},和<%= >这些符号不能出现在el中,
用可变参数,会报这个异常

The class java.lang.String... value specified in the method signature in TLD for the function zl:format cannot be found. java.lang.String... value

但是我的TLD文件写的是:
  <function>
          <name>format</name>
          <function-class>name.lei.web.tags.StringFormat</function-class>
          <function-signature>java.lang.String format(java.lang.String, java.lang.String... )</function-signature>
  </function>   
要是改为
  <function>
          <name>format</name>
          <function-class>name.lei.web.tags.StringFormat</function-class>
          <function-signature>java.lang.String format(java.lang.String, java.lang.String[] )</function-signature>
  </function>
会有这个参数错误异常 :
javax.el.ELException: Function 'zl:format' specifies 2 params, but 3 were declared


再看方法声明 public static String format(String basal, String... ){
第二个参数改为数组没用
类包名:package name.lei.web.tags;

感觉还是tld文件有问题

请问如何解决这个问题

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

1 个回复

倒序浏览
我不纠结了,我退步了,不在el表达式里面直接传值了
  <%
          String [] value = new String []{"apple" ,"fuck"};
        request.setAttribute("value",value);
  %>
         ${zl:format("this a [0] ,so you  can [1] it ",value ) }
    <!-- ${zl:format("this a [0] ,so you  can [1] it ","pig") } -->

有趣的发现,下面哪行注释,服务器,也给翻译了,所以会有Cannot convert pig of type class java.lang.String to class [Ljava.lang.String;异常

搞不懂,注释为什么要翻译
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马