1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.struts.taglib.nested.bean;
19
20 import org.apache.struts.taglib.bean.MessageTag;
21 import org.apache.struts.taglib.nested.NestedNameSupport;
22 import org.apache.struts.taglib.nested.NestedPropertyHelper;
23
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.jsp.JspException;
26
27 /***
28 * NestedWriteTag.
29 *
30 * @version $Rev: 376843 $
31 * @since Struts 1.1
32 */
33 public class NestedMessageTag extends MessageTag implements NestedNameSupport {
34
35 private String originalName = null;
36 private String originalProperty = null;
37
38 /***
39 * Overriding method of the heart of the matter. Gets the relative
40 * property and leaves the rest up to the original tag implementation.
41 * Sweet.
42 *
43 * @return int JSP continuation directive. This is in the hands of the
44 * super class.
45 */
46 public int doStartTag() throws JspException {
47
48 originalName = getName();
49 originalProperty = getProperty();
50
51
52 HttpServletRequest request =
53 (HttpServletRequest) pageContext.getRequest();
54
55
56 NestedPropertyHelper.setNestedProperties(request, this);
57
58
59 return super.doStartTag();
60 }
61
62 /***
63 * Complete the processing of the tag. The nested tags here will restore
64 * all the original value for the tag itself and the nesting context.
65 *
66 * @return int to describe the next step for the JSP processor
67 * @throws JspException for the bad things JSP's do
68 */
69 public int doEndTag() throws JspException {
70
71 int i = super.doEndTag();
72
73
74 setName(originalName);
75 setProperty(originalProperty);
76
77
78 return i;
79 }
80
81 /***
82 * Release the tag's resources and reset the values.
83 */
84 public void release() {
85 super.release();
86
87
88 originalName = null;
89 originalProperty = null;
90 }
91 }