01: // Copyright 2006, 2007 The Apache Software Foundation
02: //
03: // Licensed under the Apache License, Version 2.0 (the "License");
04: // you may not use this file except in compliance with the License.
05: // You may obtain a copy of the License at
06: //
07: // http://www.apache.org/licenses/LICENSE-2.0
08: //
09: // Unless required by applicable law or agreed to in writing, software
10: // distributed under the License is distributed on an "AS IS" BASIS,
11: // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12: // See the License for the specific language governing permissions and
13: // limitations under the License.
14:
15: package org.apache.tapestry.annotations;
16:
17: import static java.lang.annotation.RetentionPolicy.RUNTIME;
18:
19: import java.lang.annotation.Documented;
20: import java.lang.annotation.ElementType;
21: import java.lang.annotation.Retention;
22: import java.lang.annotation.Target;
23:
24: /**
25: * Marker annotation for methods that should be executed at the start of rendering the component.
26: * This usually includes rendering of the component's start tag.
27: * <p>
28: * Such methods may optionally take a {@link org.apache.tapestry.MarkupWriter} parameter, and may
29: * return void or boolean. Returning true or void will allow the component to advance into the
30: * render template / render body phase. If a body is present, the
31: * {@link org.apache.tapestry.annotations.BeforeRenderBody} phase will execute. If a component has a
32: * template, the {@link BeforeRenderTemplate} phase will execute (and the render body will only
33: * occur if the template directs so).
34: * <p>
35: * Either way, the {@link org.apache.tapestry.annotations.AfterRender} phase will execute after the
36: * template and/or body have rendered. A component with a body but without a template will still see
37: * the {@link org.apache.tapestry.annotations.BeforeRenderBody} phase execute.
38: * <p>
39: * Returning false will skip rendering of the template and/or body, and jump directly to the
40: * {@link AfterRender} phase.
41: */
42: @Target(ElementType.METHOD)
43: @Retention(RUNTIME)
44: @Documented
45: public @interface BeginRender {
46:
47: }
|