struts2标签

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

当在查询页面须要显示编程语言时,咱们不能直接显示"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> apache

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

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

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

 /**
     * 转义数据库中存放的用户我的使用的编程语言
     * @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;
      }
     };
    }get

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

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

相关文章
相关标签/搜索