KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > taglib > ErrorTag


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.ext.taglib;
66
67 import com.jcorporate.expresso.core.controller.ControllerResponse;
68 import com.jcorporate.expresso.core.controller.ErrorCollection;
69 import com.jcorporate.expresso.core.i18n.Messages;
70 import com.jcorporate.expresso.ext.struts.taglib.ControllerUtils;
71 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
72 import org.apache.struts.action.ActionMessage;
73
74 import javax.servlet.http.HttpServletRequest JavaDoc;
75 import javax.servlet.jsp.JspTagException JavaDoc;
76 import javax.servlet.jsp.JspWriter JavaDoc;
77 import javax.servlet.jsp.PageContext JavaDoc;
78 import java.util.Iterator JavaDoc;
79
80
81 /**
82  * The ErrorTag renders an Expresso ErrorCollection on a page.
83  * The error list is rendered as an html unordered (bulleted) list.
84  * The errors are displayed in the order they where saved to the
85  * ErrorCollection. The "class" attribute can be set to control
86  * the style of the list items.
87  *
88  * @author Adam Rossi
89  */

90 public class ErrorTag
91         extends ExpressoTagSupport {
92     private ErrorCollection errorCollection = null;
93     private String JavaDoc name = null;
94     private String JavaDoc property = null;
95     private String JavaDoc nameToUse = null;
96     private String JavaDoc cssClass = null;
97
98     /**
99      *
100      */

101     public ErrorTag() {
102         super();
103     } /* ErrorTag() */
104
105     /**
106      * Standard doEndTag.
107      *
108      * @return int
109      */

110     public int doEndTag()
111             throws javax.servlet.jsp.JspTagException JavaDoc {
112         nameToUse = name;
113
114         try {
115             if (nameToUse == null) {
116                 nameToUse = ErrorCollection.ERRORCOLLECTIONKEY; //by default
117
}
118
119             errorCollection = (ErrorCollection) pageContext.getAttribute(nameToUse, PageContext.REQUEST_SCOPE);
120
121             ControllerResponse myResponse = ControllerUtils.getResponse(pageContext);
122
123             if (errorCollection != null) {
124                 FastStringBuffer fsb = FastStringBuffer.getInstance();
125                 try {
126                     if (errorCollection.getErrorCount() > 0) {
127
128                         //we have an errorcollection with some errors
129
JspWriter JavaDoc writer = pageContext.getOut();
130                         try {
131                             fsb.append(myResponse.getString("errors.header"));
132                         } catch (java.lang.IllegalArgumentException JavaDoc ex) {
133                             //We try to get it from the expresso schema if it
134
//doesn't exist
135
fsb.append(Messages.getString(com.jcorporate.expresso.core.ExpressoSchema.class.getName(),
136                                     (HttpServletRequest JavaDoc) pageContext.getRequest(),
137                                     "errors.header", new Object JavaDoc[]{}));
138                         }
139 // writer.println(myResponse.getString("errors.header"));
140

141                         ActionMessage oneError = null;
142                         Iterator JavaDoc iter = null;
143
144                         if (property == null) {
145                             iter = errorCollection.get();
146                         } else {
147                             iter = errorCollection.get(property);
148                         }
149                         while (iter.hasNext()) {
150                             oneError = (ActionMessage) iter.next();
151                             fsb.append(" <li>");
152                             if (cssClass != null) {
153                                 fsb.append("<span class=");
154                                 fsb.append(cssClass);
155                                 fsb.append(">");
156                             }
157                             fsb.append(myResponse.getString(oneError.getKey(), oneError.getValues()));
158                             if (cssClass != null) {
159                                 fsb.append("</span>");
160                             }
161                             fsb.append("</li>\n");
162 // writer.println(" <LI>" + oneError.getKey() + "</LI>");
163
}
164
165                         try {
166                             String JavaDoc footer = myResponse.getString("errors.footer");
167                             if (footer != null && footer.length() > 0) {
168                                 fsb.append(footer);
169                                 fsb.append("\n");
170                             }
171                         } catch (java.lang.IllegalArgumentException JavaDoc ex) {
172                             //We try to get it from the expresso schema if it
173
//doesn't exist
174
String JavaDoc footer = Messages.getString(
175                                     com.jcorporate.expresso.core.ExpressoSchema.class.getName(),
176                                     (HttpServletRequest JavaDoc) pageContext.getRequest(),
177                                     "errors.footer", new Object JavaDoc[]{});
178                             if (footer != null && footer.length() > 0) {
179                                 fsb.append(footer);
180                                 fsb.append("\n");
181                             }
182                         }
183                         writer.print(fsb.toString());
184                     }
185                 } finally {
186                     fsb.release();
187                 }
188             }
189         } catch (Exception JavaDoc e) {
190             throw new JspTagException JavaDoc("ErrorTag: " + e.getMessage());
191         }
192
193         return EVAL_PAGE;
194     } /* doEndTag() */
195
196
197     /**
198      * Do nothing until end tag.
199      *
200      * @return int
201      * @throws javax.servlet.jsp.JspTagException
202      * The exception description.
203      */

204     public int doStartTag()
205             throws javax.servlet.jsp.JspTagException JavaDoc {
206         return SKIP_BODY;
207     } /* doStartTag() */
208
209
210     /**
211      * Setter method for Name.
212      *
213      * @return java.lang.String
214      */

215     public String JavaDoc getName() {
216         return nameToUse;
217     } /* getName() */
218
219
220     public String JavaDoc getProperty() {
221         return property;
222     }
223
224     /**
225      * Insert the method's description here.
226      * Creation date: (12/29/2000 %r)
227      *
228      * @param newName java.lang.String
229      */

230     public void setName(java.lang.String JavaDoc newName) {
231         name = newName;
232     } /* setName(java.lang.String) */
233
234
235     public void setProperty(String JavaDoc newProperty) {
236         property = newProperty;
237     }
238
239     public void setClass(String JavaDoc newClass) {
240         cssClass = newClass;
241     }
242
243 } /* ErrorTag */
244
Popular Tags