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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张磊 黑马帝   /  2011-11-7 14:34  /  3863 人查看  /  3 人回复  /   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文件有问题

请问如何解决这个问题



该贴已经同步到 张磊的微博

3 个回复

倒序浏览
我不纠结了,我退步了,不在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;异常

搞不懂,注释为什么要翻译
回复 使用道具 举报
你试一下<!-- <%="注释"%> -->这样也会被解析的,html的注释对el语法不起作用,只对html代码起作用,如果要注释就要把$转义或把{}转义输出
回复 使用道具 举报
还非得这样做才行
<%-- ${zl:format("this a [0] ,so you  can [1] it ","pig") }--%>

他他发现HTML代码不做处理,是我,对™要求多了,还是第一次犯这个错误,应该说,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马