有的时候,我们在数据库中,会在一个字段存放多个值,之间用特殊字符分割。
比如,需要某个字段存放了用户个人使用的编程语言(可以多选)
1.Java
2.C
3.PHP
如果用户选择了1和2,那么,在数据库中的"编程语言"一栏里,可能会写入"1,2"(此处以逗号分隔).

当在查询页面需要显示编程语言时,我们不能直接显示"1,2",而是需要转换成"Java、C"。
方案1:我们可以在后台得到查询结果后转义,这个需要在后台遍历查询的结果集,效率不高。
方案2:我们可以使用struts2的标签<s:generator>实现上面的功能

<s:generator val="languageItem" separator="," converter="%{languageItemConverter}">
    <s:iterator status="row_languageItem">
        <s:if test="#row_languageItem.index != 0">
            、<s:property />
        </s:if>
        <s:else>
            <s:property />
        </s:else>
    </s:iterator>
</s:generator>

val="languageItem":为后台保存"1,2"的变量;
separator=",":标明变量的分隔符;
converter="%{languageItemConverter}":指明languageItem的转换方法,我们需要在对应的Action中添加方法public org.apache.struts2.util.IteratorGenerator.Converter getLanguageItemConverter(){}。

<s:generator>内部需要嵌套使用<s:iterator>来遍历后台转换后产生的结果集,然后使用特定的方式显示(例子中是通过"、"来分隔显示转义后的字符)。

下面是此方法Action的部分代码:
     *Action.java

/**
     * 转义数据库中存放的用户个人使用的编程语言
     * @return
     */
    public Converter getLanguageItemConverter(){
        return new Converter() {
            public Object convert(String value) throws Exception {
                String result = "";
                switch (Integer.parseInt(value)) {
                    case 1:
                        result = "Java";
                        break;
                    case 2:
                        result = "C";
                        break;
                    case 3:
                        result = "PHP";
                        break;
                }
                return result;
            }
        };
    }

通过以上代码,页面上最终将显示的结果是:
Java、C

最后再提一下<s:generator>标签中的可选属性count,它是用来指定所生成迭代器中元素的数量。
以上面为例,如果设置count="1",页面将只显示:Java;
如果设置count="3",页面将显示:Java、C、Java;
也就是说,如果count的值大于转换后的结果集个数,他将会从头循环结果集,直到填满count设置的数量,
所以,如没有特殊要求,我们一般不设置此属性。

<s:generator separator=";" val="news.affix">
              <s:iterator status="file" id="url">
                      <div style="" class="xing5" id="updiv${file.count }">
                      <span style="" id="upfiled2">
                          <span>
                              &nbsp;&nbsp;&nbsp;&nbsp;
                              <s:generator separator=":" val="url">
                              <s:iterator status="file1" >
                                  <s:if test="#file1.count == 2">  
                                      <a style="font-weight:bold" href="<s:property />">
                                      <s:generator separator=":" val="url">
                                          <s:iterator status="file1" >
                                              <s:if test="#file1.count == 1">  
                                                  <s:property />
                                              </s:if>
                                          </s:iterator>
                                     </s:generator>
                                      </a>
                                  </s:if>
                              </s:iterator>                   
            </s:generator>                                                    </span>
                      </span>
                  </div>
                </s:iterator>
          </s:generator>

转载于:https://www.cnblogs.com/weipeng/archive/2012/10/16/2725453.html

JustForFly struts2标签s:generator相关推荐

  1. Struts2 分割字符串标签s:generator

    Struts2 分割字符串标签s:generator有些时候会从后台返回一个字符串,可以通过Strut2的标签s:generator进行分割.generator标签,该标签可以将指定字符串按指定分隔符 ...

  2. struts2标签详解

    struts2标签讲解 要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可:<%@ taglib prefix="s" uri="/struts-t ...

  3. Struts2标签库常用标签(转)

    struts2标签讲解 要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可:<%@ taglib prefix="s" uri="/struts-t ...

  4. Struts2标签库和OGNL

    学习内容 Struts 2标签库 OGNL 能力目标 熟练使用Struts 2常用标签 熟练使用OGNL 本章简介 前面我们编写的案例使用的都是HTML标签,这些标签并不能很好的与Struts 2框架 ...

  5. (五)Struts2 标签

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 标签简介 Struts2 自己封装了一套标签,比JSTL ...

  6. 使用Struts2标签

    Struts2提供了大量标签帮助开发表现层页面,Struts2标签库与Struts1相比,不依赖于任何表现层技术,大部分可以在各种表现层技术中使用,包括最常用的jsp页面,也可以在Velocity和F ...

  7. Struts2 标签库

    Struts 2标签简介 Struts 标签分类 使用Struts标签库 OGNL OGNL集合运算 OGNL表达式对静态属性的访问 控制标签 if/else if/else iterator gen ...

  8. struts2 标签中read-only=true 和disabled的区别

    struts2 标签中read-only=true 和disabled的区别 都不能对内容进行修改,区别在readonly提交的时候还会有该字段,但是disabled会在提交的时候忽略该字段 转载于: ...

  9. java struts2标签库 常用标签

    基本概述 对于一个MVC框架而言,重点是实现两部分:业务逻辑控制器部分和视图页面部分.Struts2作为一个优秀的MVC框架,也把重点放在了这两部分上.控制器主要由Action来提供支持,而视图则是由 ...

  10. Struts2标签 逻辑标签和UI标签

    效果如下图: 先配置struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE s ...

最新文章

  1. R语定义函数对宽分布(wide distribution )、有偏分布(skew distribution)的数据进行对数变换(符号对数变换函数、signed log transformation)
  2. SAP WM初阶之LX09查询TR List
  3. java 泛型 恶心_Java的泛型原来这样让人不舒服
  4. undefined reference to `__android_log_print'
  5. saas- -m ihrm 项目_Convertlab等企业入选腾讯SaaS加速器二期名单
  6. 失败 php_PHP+Mysql 实现数据库增删改查
  7. 1996: [Hnoi2010]chorus 合唱队
  8. Yandex浏览器安装crx插件
  9. CNC模具编程的工作流程
  10. 终端发送自己的短地址给协调器
  11. ssm运动器材共享平台毕业设计源码201816
  12. 酷派系列手机root后怎么恢复文件
  13. C++正则表达式regex库使用方法总结
  14. 复盘618:数字狂欢背后透露了哪些隐藏信号?
  15. Excel破解工作表保护密码
  16. 高级Java开发招聘
  17. 云中漫步-但是还有书籍
  18. echart雷达图详细配置
  19. 【模拟IC】模拟集成电路面试题分享(1)
  20. MySQL深入剖析 ---【狂神篇】

热门文章

  1. idea报错命令行过长
  2. flume与kafka的整合
  3. 小试牛刀之Kolla单节点部署
  4. linux集群之LVS入门和企业级实战(续一)
  5. sql server数据库文件的迁移(mdfldf文件)
  6. 德芙背后刻骨铭心的痛
  7. ObjectC----NSObject常用方法和OC反射机制
  8. Centos 上面用Shell脚本一键安装LAMP环境
  9. 【DIOCP开源项目】实际应用案例
  10. webpack 安装vue(两种代码模式compiler 和runtime)