黑马程序员技术交流社区

标题: el函数传递数组的问题 [打印本页]

作者: 张磊    时间: 2011-11-7 14:34
标题: el函数传递数组的问题
${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文件有问题

请问如何解决这个问题



该贴已经同步到 张磊的微博
作者: 张磊    时间: 2011-11-7 14:52
我不纠结了,我退步了,不在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;异常

搞不懂,注释为什么要翻译
作者: 林国锋    时间: 2011-11-7 14:55
你试一下<!-- <%="注释"%> -->这样也会被解析的,html的注释对el语法不起作用,只对html代码起作用,如果要注释就要把$转义或把{}转义输出
作者: 张磊    时间: 2011-11-7 15:05
还非得这样做才行
<%-- ${zl:format("this a [0] ,so you  can [1] it ","pig") }--%>

他他发现HTML代码不做处理,是我,对™要求多了,还是第一次犯这个错误,应该说,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2