亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iteratetaghandler.java

?? 本套系統采用了業界當前最為流行的beanAction組件
?? JAVA
字號:
/*
 *  Copyright 2004 Clinton Begin
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements;

import com.ibatis.common.beans.Probe;
import com.ibatis.common.beans.ProbeFactory;

public class IterateTagHandler extends BaseTagHandler {

  private static final Probe PROBE = ProbeFactory.getProbe();

  public int doStartFragment(SqlTagContext ctx, SqlTag tag, Object parameterObject) {
    IterateContext iterate = (IterateContext) ctx.getAttribute(tag);
    if (iterate == null) {
      IterateContext parentIterate = ctx.peekIterateContext();
      
      ctx.pushRemoveFirstPrependMarker(tag);
      
      Object collection;
      String prop = tag.getPropertyAttr();
      if (prop != null && !prop.equals("")) {
          if(null != parentIterate && parentIterate.isAllowNext()){
            parentIterate.next();
            parentIterate.setAllowNext(false);
            if(!parentIterate.hasNext()) {
              parentIterate.setFinal(true);
            }
          }
          
          if (parentIterate != null) {
              prop = parentIterate.addIndexToTagProperty(prop);
          }
          
        collection = PROBE.getObject(parameterObject, prop);
      } else {
        collection = parameterObject;
      }
      iterate = new IterateContext(collection,tag, parentIterate);
      
      iterate.setProperty( null == prop ? "" : prop );
      
      ctx.setAttribute(tag, iterate);
      ctx.pushIterateContext(iterate);
    } else if ("iterate".equals(tag.getRemoveFirstPrepend())) {
      ctx.reEnableRemoveFirstPrependMarker();
    }
    
    if (iterate != null && iterate.hasNext()) {
      return INCLUDE_BODY;
    } else {
      return SKIP_BODY;
    }
  }

  public int doEndFragment(SqlTagContext ctx, SqlTag tag, Object parameterObject, StringBuffer bodyContent) {
    IterateContext iterate = (IterateContext) ctx.getAttribute(tag);

    if (iterate.hasNext() || iterate.isFinal()) {
      
      if(iterate.isAllowNext()) {
        iterate.next();
      }

      if (bodyContent.toString().trim().length() > 0) {
        // the sub element produced a result.  If it is the first one
        // to produce a result, then we need to add the open
        // text.  If it is not the first to produce a result then
        // we need to add the conjunction text
        if (iterate.someSubElementsHaveContent()) {
          if (tag.isConjunctionAvailable()) {
            bodyContent.insert(0, tag.getConjunctionAttr());
          }
        } else {
            // we need to specify that this is the first content
            // producing element so that the doPrepend method will
            // add the prepend
            iterate.setPrependEnabled(true);
            
            if (tag.isOpenAvailable()) {
              bodyContent.insert(0, tag.getOpenAttr());
            }
        }
        iterate.setSomeSubElementsHaveContent(true);
      }
      
      if (iterate.isLast() && iterate.someSubElementsHaveContent()) {
        if (tag.isCloseAvailable()) {
          bodyContent.append(tag.getCloseAttr());
        }
      }
      
      iterate.setAllowNext(true);
      if(iterate.isFinal()) {
        return super.doEndFragment(ctx,tag,parameterObject,bodyContent);
      } else {
        return REPEAT_BODY;
      }

    } else {
      return super.doEndFragment(ctx,tag,parameterObject,bodyContent);
    }
  }

  public void doPrepend(SqlTagContext ctx, SqlTag tag, Object parameterObject, StringBuffer bodyContent) {
    IterateContext iterate = (IterateContext) ctx.getAttribute(tag);
    if (iterate.isPrependEnabled()) {
      super.doPrepend(ctx, tag, parameterObject, bodyContent);
      iterate.setPrependEnabled(false);  // only do the prepend one time
    }
  }

  public boolean isPostParseRequired() {
    return true;
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品热久久久久夜色精品三区| 成人精品免费看| 亚洲影院免费观看| 综合久久给合久久狠狠狠97色| 国产日韩av一区| 国产精品三级视频| 国产精品黄色在线观看| 国产精品黄色在线观看| 亚洲日本青草视频在线怡红院| 亚洲欧美日韩系列| 亚洲国产一区二区三区| 欧美a级理论片| 国产乱子伦视频一区二区三区 | 日韩一区和二区| 日韩视频在线永久播放| 精品国产一区二区精华| 欧美激情综合五月色丁香| 最新热久久免费视频| 亚洲一区二区三区在线| 日韩电影免费在线观看网站| 国产一区二区在线看| 成年人国产精品| 欧美精品1区2区3区| 精品成人一区二区三区四区| 中文字幕亚洲成人| 日本欧美大码aⅴ在线播放| 国产精品一二三| 欧美在线小视频| 久久久久久久综合狠狠综合| 欧美aⅴ一区二区三区视频| 国产在线看一区| 97久久超碰国产精品| 69堂成人精品免费视频| 国产精品成人午夜| 丝袜亚洲另类欧美| 成人黄色免费短视频| 91精品婷婷国产综合久久| 欧美大片一区二区| 久久久高清一区二区三区| 亚洲自拍偷拍麻豆| 国产精品亚洲一区二区三区妖精 | 亚洲一区在线视频观看| 久久电影网电视剧免费观看| 91精品福利视频| 国产午夜精品理论片a级大结局| 亚洲高清免费在线| av男人天堂一区| 久久久噜噜噜久噜久久综合| 天天亚洲美女在线视频| 99久久免费精品高清特色大片| 日韩一级高清毛片| 亚洲成a人片综合在线| 不卡大黄网站免费看| 最新日韩av在线| 国产成人av网站| 欧美mv日韩mv国产| 亚洲国产aⅴ天堂久久| 99re66热这里只有精品3直播| 久久美女艺术照精彩视频福利播放| 亚洲成av人在线观看| 91久久免费观看| 亚洲欧洲制服丝袜| 91麻豆文化传媒在线观看| 久久精品男人天堂av| 国产福利电影一区二区三区| www一区二区| 蜜臀国产一区二区三区在线播放| 精品视频123区在线观看| 一区二区三区**美女毛片| 成人激情校园春色| 中文字幕中文字幕在线一区| 成人精品一区二区三区四区 | 欧美精品久久天天躁| 亚洲自拍偷拍图区| 欧美揉bbbbb揉bbbbb| 亚洲同性同志一二三专区| 成人亚洲精品久久久久软件| 国产丝袜在线精品| 国产成人一区二区精品非洲| 中文字幕av一区二区三区免费看| 九色综合狠狠综合久久| 2023国产精品视频| 国产高清一区日本| 欧美极品少妇xxxxⅹ高跟鞋 | 在线成人小视频| 日韩不卡在线观看日韩不卡视频| 欧美专区亚洲专区| 日本免费新一区视频| 精品免费99久久| a级精品国产片在线观看| 亚洲人妖av一区二区| 色88888久久久久久影院野外| 伊人夜夜躁av伊人久久| 欧美日韩一卡二卡| 久久99精品久久久久婷婷| 国产人伦精品一区二区| 成人动漫一区二区| 亚洲国产精品麻豆| 欧美xxxxxxxxx| 国产99久久久国产精品| 亚洲精品免费在线观看| 欧美一级一区二区| 成人激情黄色小说| 三级久久三级久久久| 日本一区二区三区dvd视频在线| 91蝌蚪porny成人天涯| 奇米影视在线99精品| 国产精品久久99| 欧美一区二区视频在线观看 | 美女视频黄频大全不卡视频在线播放| 日韩欧美国产一区在线观看| www.99精品| 六月丁香婷婷色狠狠久久| 亚洲色图在线播放| 久久影音资源网| 欧美精品日韩一本| 99国产欧美另类久久久精品| 久草中文综合在线| 亚洲综合无码一区二区| 久久精品一区二区三区不卡| 欧美男人的天堂一二区| 成人激情av网| 黑人精品欧美一区二区蜜桃| 午夜精品久久久久久久蜜桃app| 欧美国产精品v| 日韩欧美的一区| 在线播放中文字幕一区| 99精品欧美一区二区三区综合在线| 麻豆91精品91久久久的内涵| 亚洲愉拍自拍另类高清精品| 中文字幕亚洲在| 国产精品天干天干在观线| 精品国产百合女同互慰| 欧美高清你懂得| 欧美日韩色综合| 色94色欧美sute亚洲线路一ni| av电影在线观看不卡| 福利91精品一区二区三区| 韩国在线一区二区| 久草在线在线精品观看| 日本不卡一二三| 日本va欧美va精品发布| 日韩av在线免费观看不卡| 亚洲高清一区二区三区| 亚洲永久精品国产| 亚洲成av人**亚洲成av**| 亚洲午夜久久久久久久久电影院| 亚洲欧洲成人精品av97| 亚洲婷婷在线视频| 亚洲人精品午夜| 亚洲最色的网站| 婷婷综合久久一区二区三区| 午夜精品久久久久久久蜜桃app| 午夜精品123| 免费观看成人av| 极品少妇xxxx精品少妇| 国产一区二区三区电影在线观看| 国产在线看一区| 成人高清视频免费观看| 不卡的电影网站| 在线亚洲欧美专区二区| 欧美日韩黄视频| 精品日韩欧美在线| 国产日韩欧美精品电影三级在线| 中文av一区特黄| 亚洲精品欧美专区| 奇米精品一区二区三区在线观看一| 美女诱惑一区二区| 粉嫩aⅴ一区二区三区四区五区| 91污在线观看| 欧美精品日韩一区| 国产视频911| 亚洲五码中文字幕| 国模一区二区三区白浆| 不卡的av网站| 欧美一区二区三区男人的天堂| 日韩免费视频一区| 国产精品久久久久久久久免费相片| 夜夜揉揉日日人人青青一国产精品| 日韩在线观看一区二区| 成人一区二区视频| 欧美日本视频在线| 久久久久久**毛片大全| 亚洲制服丝袜一区| 国产一区二区伦理片| 欧美综合天天夜夜久久| 亚洲精品一区二区三区精华液| 亚洲三级电影全部在线观看高清| 爽好久久久欧美精品| 高清久久久久久| 日韩视频123| 亚洲欧美日韩国产手机在线| 麻豆视频一区二区| 91丝袜国产在线播放| 精品乱码亚洲一区二区不卡| 樱花草国产18久久久久| 国产精品自拍三区| 7777精品伊人久久久大香线蕉的| 中文字幕在线不卡一区二区三区| 美女尤物国产一区|