KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > struts > taglib > logic > MessagesPresentTag


1 /*
2  * $Id: MessagesPresentTag.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 package org.apache.struts.taglib.logic;
20
21 import java.util.Iterator JavaDoc;
22
23 import javax.servlet.jsp.JspException JavaDoc;
24
25 import org.apache.struts.Globals;
26 import org.apache.struts.action.ActionMessages;
27 import org.apache.struts.taglib.TagUtils;
28
29 /**
30  * Evalute to <code>true</code> if an <code>ActionMessages</code> class or a
31  * class that can be converted to an <code>ActionMessages</code> class is in
32  * request scope under the specified key and there is at least one message in the
33  * class or for the property specified.
34  *
35  * @version $Rev: 54929 $ $Date: 2004-10-16 17:38:42 +0100 (Sat, 16 Oct 2004) $
36  * @since Struts 1.1
37  */

38 public class MessagesPresentTag extends ConditionalTagBase {
39
40     /**
41      * If this is set to 'true', then the <code>Globals.MESSAGE_KEY</code> will
42      * be used to retrieve the messages from scope.
43     */

44     protected String JavaDoc message = null;
45
46
47     public MessagesPresentTag() {
48         name = Globals.ERROR_KEY;
49     }
50
51     public String JavaDoc getMessage() {
52         return (this.message);
53     }
54
55     public void setMessage(String JavaDoc message) {
56         this.message = message;
57     }
58
59     /**
60      * Evaluate the condition that is being tested by this particular tag,
61      * and return <code>true</code> if the nested body content of this tag
62      * should be evaluated, or <code>false</code> if it should be skipped.
63      * This method must be implemented by concrete subclasses.
64      *
65      * @exception JspException if a JSP exception occurs
66      */

67     protected boolean condition() throws JspException JavaDoc {
68
69         return (condition(true));
70
71     }
72
73
74     /**
75      * Evaluate the condition that is being tested by this particular tag,
76      * and return <code>true</code> if there is at least one message in the
77      * class or for the property specified.
78      * This method must be implemented by concrete subclasses.
79      *
80      * @param desired Desired outcome for a true result
81      *
82      * @exception JspException if a JSP exception occurs
83      */

84     protected boolean condition(boolean desired) throws JspException JavaDoc {
85         ActionMessages am = null;
86
87         String JavaDoc key = name;
88         if (message != null && "true".equalsIgnoreCase(message)){
89            key = Globals.MESSAGE_KEY;
90         }
91
92         try {
93             am = TagUtils.getInstance().getActionMessages(pageContext, key);
94             
95         } catch (JspException JavaDoc e) {
96             TagUtils.getInstance().saveException(pageContext, e);
97             throw e;
98         }
99
100         Iterator JavaDoc iterator = (property == null) ? am.get() : am.get(property);
101
102         return (iterator.hasNext() == desired);
103
104     }
105
106     /**
107      * Release all allocated resources.
108      */

109     public void release() {
110         super.release();
111         name = Globals.ERROR_KEY;
112         message = null;
113     }
114
115 }
116
Popular Tags