KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > struts > taglib > tiles > UseAttributeTag


1 /*
2  * $Id: UseAttributeTag.java 54929 2004-10-16 16:38:42Z germuska $
3  *
4  * Copyright 1999-2004 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19
20 package org.apache.struts.taglib.tiles;
21
22 import javax.servlet.jsp.JspException JavaDoc;
23 import javax.servlet.jsp.PageContext JavaDoc;
24 import javax.servlet.jsp.tagext.TagSupport JavaDoc;
25
26 import org.apache.struts.taglib.tiles.util.TagUtils;
27 import org.apache.struts.tiles.ComponentContext;
28
29
30 /**
31  * Custom tag exposing a component attribute to page.
32  *
33  */

34 public class UseAttributeTag extends TagSupport JavaDoc {
35
36
37     // ----------------------------------------------------- Instance Variables
38

39
40     /**
41      * Class name of object.
42      */

43     private String JavaDoc classname = null;
44
45
46     /**
47      * The scope name.
48      */

49     private String JavaDoc scopeName = null;
50
51     /**
52      * The scope value.
53      */

54     private int scope = PageContext.PAGE_SCOPE;
55
56
57
58     /**
59      * The attribute name to be exposed.
60      */

61     private String JavaDoc attributeName = null;
62
63     /**
64      * Are errors ignored. This is the property for attribute 'ignore'.
65      * Default value is <code>false</code>, which throws an exception.
66      * Only "attribute not found" - errors are ignored.
67      */

68   protected boolean isErrorIgnored = false;
69
70
71     // ------------------------------------------------------------- Properties
72

73
74     /**
75      * Release all allocated resources.
76      */

77     public void release() {
78
79         super.release();
80         attributeName = null;
81         classname = null;
82         scope = PageContext.PAGE_SCOPE;
83         scopeName = null;
84         isErrorIgnored = false;
85           // Parent doesn't clear id, so we do it
86
// bug reported by Heath Chiavettone on 18 Mar 2002
87
id = null;
88     }
89
90     /**
91      * Get class name.
92      */

93     public String JavaDoc getClassname() {
94
95   return (this.classname);
96
97     }
98
99
100     /**
101      * Set the class name.
102      *
103      * @param name The new class name.
104      */

105     public void setClassname(String JavaDoc name) {
106
107   this.classname = name;
108
109     }
110
111     /**
112      * Set name.
113      */

114   public void setName(String JavaDoc value){
115     this.attributeName = value;
116   }
117
118     /**
119      * Get name.
120      */

121   public String JavaDoc getName()
122   {
123   return attributeName;
124   }
125
126     /**
127      * Set the scope.
128      *
129      * @param scope The new scope.
130      */

131     public void setScope(String JavaDoc scope) {
132   this.scopeName = scope;
133     }
134
135     /**
136      * Get scope.
137      */

138   public String JavaDoc getScope()
139   {
140   return scopeName;
141   }
142
143     /**
144      * Set ignore.
145      */

146   public void setIgnore(boolean ignore)
147     {
148     this.isErrorIgnored = ignore;
149     }
150
151     /**
152      * Get ignore.
153      */

154   public boolean getIgnore()
155   {
156   return isErrorIgnored;
157   }
158
159     // --------------------------------------------------------- Public Methods
160

161
162     /**
163      * Expose the requested attribute from component context.
164      *
165      * @exception JspException if a JSP exception has occurred
166      */

167   public int doStartTag() throws JspException JavaDoc
168     {
169       // Do a local copy of id
170
String JavaDoc localId=this.id;
171     if( localId==null )
172       localId=attributeName;
173
174     ComponentContext compContext = (ComponentContext)pageContext.getAttribute( ComponentConstants.COMPONENT_CONTEXT, PageContext.REQUEST_SCOPE);
175     if( compContext == null )
176       throw new JspException JavaDoc ( "Error - tag useAttribute : no tiles context found." );
177
178     Object JavaDoc value = compContext.getAttribute(attributeName);
179         // Check if value exists and if we must send a runtime exception
180
if( value == null )
181       if(!isErrorIgnored)
182         throw new JspException JavaDoc ( "Error - tag useAttribute : attribute '"+ attributeName + "' not found in context. Check tag syntax" );
183        else
184         return SKIP_BODY;
185
186     if( scopeName != null )
187       {
188       scope = TagUtils.getScope( scopeName, PageContext.PAGE_SCOPE );
189       if(scope!=ComponentConstants.COMPONENT_SCOPE)
190         pageContext.setAttribute(localId, value, scope);
191       }
192      else
193       pageContext.setAttribute(localId, value);
194
195       // Continue processing this page
196
return SKIP_BODY;
197     }
198
199
200
201
202     /**
203      * Clean up after processing this enumeration.
204      *
205      * @exception JspException if a JSP exception has occurred
206      */

207   public int doEndTag() throws JspException JavaDoc
208     {
209     return (EVAL_PAGE);
210     }
211
212 }
213
Popular Tags