View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17  package org.apache.portals.bridges.struts.taglib;
    18
    19  import javax.servlet.ServletRequest; // javadoc
    20  import javax.servlet.jsp.JspException;
    21
    22  import org.apache.portals.bridges.struts.PortletServlet;
    23
    24  /***
    25   * Supports the Struts html:image tag to be used within a Portlet context allowing relative
    26   * img src paths.
    27   *
    28   * @author <a href="mailto:ate@douma.nu">Ate Douma</a>
    29   * @version $Id: ImageTag.java 517068 2007-03-12 01:44:37Z ate $
    30   */
    31  public class ImageTag extends org.apache.struts.taglib.html.ImageTag
    32  {
    33      /***
    34       * Allow a relative img src path to be used within a PortletRequest context.
    35       * <p>
    36       * Temporarily modifies the {@link #src} attribute value (if defined and if within the
    37       * context of a {@link PortletServlet#isPortletRequest(ServletRequest) PortletRequest}).<br/>
    38       * A relative src path is changed to a context relative path using the current
    39       * request uri.</p>
    40       * @return {@link #EVAL_PAGE}
    41       */
    42      public int doEndTag() throws JspException
    43      {
    44          String src = getSrc();
    45          if ( PortletServlet.isPortletRequest(pageContext.getRequest()) && src != null )
    46          {
    47              try
    48              {
    49                  setSrc(TagsSupport.getContextRelativeURL(pageContext,src,true));
    50                  super.doEndTag();
    51              }
    52              finally
    53              {
    54                  setSrc(src);
    55              }
    56          }
    57          else
    58          {
    59              super.doEndTag();
    60          }
    61          return (EVAL_PAGE);
    62      }
    63  }