001: /*
002: * $Id: StrutsTag.java 471754 2006-11-06 14:55:09Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts.taglib.bean;
022:
023: import org.apache.struts.config.ModuleConfig;
024: import org.apache.struts.taglib.TagUtils;
025: import org.apache.struts.util.MessageResources;
026:
027: import javax.servlet.jsp.JspException;
028: import javax.servlet.jsp.tagext.TagSupport;
029:
030: /**
031: * Define a scripting variable that exposes the requested Struts internal
032: * configuraton object.
033: *
034: * @version $Rev: 471754 $ $Date: 2004-10-16 12:38:42 -0400 (Sat, 16 Oct 2004)
035: * $
036: */
037: public class StrutsTag extends TagSupport {
038: /**
039: * The message resources for this package.
040: */
041: protected static MessageResources messages = MessageResources
042: .getMessageResources("org.apache.struts.taglib.bean.LocalStrings");
043:
044: // ------------------------------------------------------------- Properties
045:
046: /**
047: * The name of the scripting variable that will be exposed as a page scope
048: * attribute.
049: */
050: protected String id = null;
051:
052: /**
053: * The name of the <code>ActionFormBean</code> object to be exposed.
054: */
055: protected String formBean = null;
056:
057: /**
058: * The name of the <code>ActionForward</code> object to be exposed.
059: */
060: protected String forward = null;
061:
062: /**
063: * The name of the <code>ActionMapping</code> object to be exposed.
064: */
065: protected String mapping = null;
066:
067: public String getId() {
068: return (this .id);
069: }
070:
071: public void setId(String id) {
072: this .id = id;
073: }
074:
075: public String getFormBean() {
076: return (this .formBean);
077: }
078:
079: public void setFormBean(String formBean) {
080: this .formBean = formBean;
081: }
082:
083: public String getForward() {
084: return (this .forward);
085: }
086:
087: public void setForward(String forward) {
088: this .forward = forward;
089: }
090:
091: public String getMapping() {
092: return (this .mapping);
093: }
094:
095: public void setMapping(String mapping) {
096: this .mapping = mapping;
097: }
098:
099: // --------------------------------------------------------- Public Methods
100:
101: /**
102: * Retrieve the required configuration object and expose it as a scripting
103: * variable.
104: *
105: * @throws JspException if a JSP exception has occurred
106: */
107: public int doStartTag() throws JspException {
108: // Validate the selector arguments
109: int n = 0;
110:
111: if (formBean != null) {
112: n++;
113: }
114:
115: if (forward != null) {
116: n++;
117: }
118:
119: if (mapping != null) {
120: n++;
121: }
122:
123: if (n != 1) {
124: JspException e = new JspException(messages
125: .getMessage("struts.selector"));
126:
127: TagUtils.getInstance().saveException(pageContext, e);
128: throw e;
129: }
130:
131: // Retrieve our module configuration information
132: ModuleConfig config = TagUtils.getInstance().getModuleConfig(
133: pageContext);
134:
135: // Retrieve the requested object to be exposed
136: Object object = null;
137: String selector = null;
138:
139: if (formBean != null) {
140: selector = formBean;
141: object = config.findFormBeanConfig(formBean);
142: } else if (forward != null) {
143: selector = forward;
144: object = config.findForwardConfig(forward);
145: } else if (mapping != null) {
146: selector = mapping;
147: object = config.findActionConfig(mapping);
148: }
149:
150: if (object == null) {
151: JspException e = new JspException(messages.getMessage(
152: "struts.missing", selector));
153:
154: TagUtils.getInstance().saveException(pageContext, e);
155: throw e;
156: }
157:
158: // Expose this value as a scripting variable
159: pageContext.setAttribute(id, object);
160:
161: return (SKIP_BODY);
162: }
163:
164: /**
165: * Release all allocated resources.
166: */
167: public void release() {
168: super.release();
169: id = null;
170: formBean = null;
171: forward = null;
172: mapping = null;
173: }
174: }
|