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-el: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: ELImageTag.java 517068 2007-03-12 01:44:37Z ate $
30   */
31  public class ELImageTag extends org.apache.strutsel.taglib.html.ELImageTag 
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  }