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

相關文章
相關標籤/搜索