当前位置:  开发笔记 > 编程语言 > 正文

在JSP EL中连接字符串?

如何解决《在JSPEL中连接字符串?》经验,为你挑选了2个好方法。

我有一个bean列表,每个bean都有一个属性,它本身就是一个电子邮件地址列表.


    
"> ...

这会

在List中呈现每个bean 一个.

对于子列表,我希望能够做的是连接列表中的每个条目,形成一个String,被显示为一部分

title属性.为什么?因为我们使用javascript库(mootools)将其
转换为浮动工具提示,并且库将title转换为工具提示的文本.

所以,如果${conf.subject}是"主题",最后我想要title

是"主题:blah@blah.com,blah2@blah2.com等",包含所有子列表的电子邮件地址.

我怎么能用JSP EL做到这一点?我试图远离jsp文件中的scriptlet块.



1> erickson..:

"干净"的方法是使用一个函数.由于JSTL join函数不适用于a Collection,您可以编写自己的函数而不会有太多麻烦,并且可以在整个地方重复使用它,而不是剪切和粘贴大量的循环代码.

您需要功能实现和TLD,以便让您的Web应用程序知道在哪里找到它.将它们放在JAR中并将其放入WEB-INF/lib目录中.

这是一个大纲:

COM/X /标签库/核心/ StringUtil.java

package com.x.taglib.core;

public class StringUtil {

  public static String join(Iterable elements, CharSequence separator) {
    StringBuilder buf = new StringBuilder();
    if (elements != null) {
      if (separator == null)
        separator = " ";
      for (Object o : elements) {
        if (buf.length() > 0)
          buf.append(separator);
        buf.append(o);
      }
    }
    return buf.toString();
  }

}

META-INF/xc.tld:


  1.0
  x-c
  http://dev.x.com/taglib/core/1.0
  
    Join elements of an Iterable into a string.
    Join
    join
    com.x.taglib.core.StringUtil
    java.lang.String join(java.lang.Iterable, java.lang.CharSequence)
  

虽然顶级域名(TLD)有点冗长,但对于使用JSP的任何开发人员来说,了解自己的方法是一项很好的技能.而且,既然您选择了像JSP这样的标准进行演示,那么您很有可能拥有可以帮助您的工具.

与向底层模型添加更多方法的替代方法相比,此方法具有许多优点.此函数可以编写一次,并在任何项目中重用.它适用于封闭源的第三方库.可以在不同的上下文中支持不同的分隔符,而不会使用每种方法的新方法污染模型API.

最重要的是,它支持视图和模型控制器开发角色的分离.这两个领域的任务通常由不同的人在不同的时间执行.保持这些层之间的松散耦合最小化了复杂性和维护成本.即使是在演示文稿中使用不同分隔符等微不足道的更改,也需要程序员修改库,但是您的系统非常昂贵且繁琐.

StringUtil无论是否暴露为EL函数,该类都是相同的.唯一需要的"额外"是TLD,这是微不足道的; 一个工具可以很容易地生成它.



2> matt b..:

想出一个有点脏的方法来做到这一点:


    
    
        
    
    
"> ...

我只是反复使用,引用它自己的值,来追加/连接字符串.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有