View Javadoc

    1   /*
    2    * $Id: IteratorTag.java 471756 2006-11-06 15:01:43Z husted $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21  package org.apache.struts2.views.jsp;
    22
    23  import javax.servlet.http.HttpServletRequest;
    24  import javax.servlet.http.HttpServletResponse;
    25  import javax.servlet.jsp.JspException;
    26
    27  import org.apache.struts2.components.Component;
    28  import org.apache.struts2.components.IteratorComponent;
    29
    30  import com.opensymphony.xwork2.util.ValueStack;
    31
    32  /***
    33   * @see IteratorComponent
    34   */
    35  public class IteratorTag extends ComponentTagSupport {
    36
    37      private static final long serialVersionUID = -1827978135193581901L;
    38
    39      protected String statusAttr;
    40      protected String value;
    41
    42      public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
    43          return new IteratorComponent(stack);
    44      }
    45
    46      protected void populateParams() {
    47          super.populateParams();
    48
    49          IteratorComponent tag = (IteratorComponent) getComponent();
    50          tag.setStatus(statusAttr);
    51          tag.setValue(value);
    52      }
    53
    54      public void setStatus(String status) {
    55          this.statusAttr = status;
    56      }
    57
    58      public void setValue(String value) {
    59          this.value = value;
    60      }
    61
    62      public int doEndTag() throws JspException {
    63          component = null;
    64          return EVAL_PAGE;
    65      }
    66
    67      public int doAfterBody() throws JspException {
    68          boolean again = component.end(pageContext.getOut(), getBody());
    69
    70          if (again) {
    71              return EVAL_BODY_AGAIN;
    72          } else {
    73              if (bodyContent != null) {
    74                  try {
    75                      bodyContent.writeOut(bodyContent.getEnclosingWriter());
    76                  } catch (Exception e) {
    77                      throw new JspException(e.getMessage());
    78                  }
    79              }
    80              return SKIP_BODY;
    81          }
    82      }
    83
    84  }