You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/05/19 21:28:45 UTC
svn commit: r170981 [2/3] - in
/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding:
bundle/ cellrepeater/ datagrid/ invoke/ message/ pageinput/ repeater/
repeater/pad/ script/ xml/
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/Rows.java Thu May 19 12:28:44 2005
@@ -75,6 +75,40 @@
* </ul>
* </p>
* @jsptagref.tagdescription
+ * <p>
+ * The Rows tag is used to render a table row(s) that contain the data from a data set displayed
+ * in a data grid. The rows rendered here render after the header reders with the {@link Header} and before
+ * the footer renders in the {@link Footer}. The body of this tag usually contains the data grid's "cell" tags
+ * which are used to render HTML table cells inside of the rows rendered by this tag. Such tags include:
+ * <ul>
+ * <li>{@link AnchorCell} which is used to render anchors</li>
+ * <li>{@link ImageAnchorCell} which is used to render clickable images</li>
+ * <li>{@link ImageCell} which is used to render an image</li>
+ * <li>{@link SpanCell} which is used to render an HTML span with data bound content</li>
+ * <li>{@link TemplateCell} which can contain arbitrary content for {@link javax.servlet.jsp.tagext.SimpleTag}</li>
+ * </ul>
+ * </p>
+ * <p>
+ * The attribute setters in this class are used to add attributes to the <tbody> tag which will be rendered
+ * when row groups are enabled. When row group rendering is disabled, attributes set here do not render.
+ * </p>
+ * <p>
+ * Because this tag renders inside of an HTML table, it by default renders an HTML
+ * <tr> tag to represent a table row. Table row tag rendering can be disabled using the {@link #setRenderRow(boolean)}
+ * attribute. When this is disabled, the page author is responsible for maintaining the integrity of the
+ * HTML table by writing <tr> tags manually or by using the {@link Row} tag. When this tag is rendering
+ * it does not produce table cells; the contents of the table row in the footer is entirely left to the
+ * page author. With row rendering disabled, it is also possible to add multiple table rows to the
+ * end of a data grid.
+ * </p>
+ * <p>
+ * The set of JSP implicit objects available to the body include:
+ * <ul>
+ * <li><code>dataGridModel</code> -- the {@link org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel}
+ * for the cell's containing data grid.</li>
+ * </ul>
+ * </p>
+ *
* @netui:tag name="rows" body-content="scriptless"
* description="Renders the data rows into a NetUI data grid"
*/
@@ -98,7 +132,6 @@
*
* @param onClick the onClick event.
* @jsptagref.attributedescription The onClick JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onClick</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onClick JavaScript event for the HTML tbody tag."
*/
@@ -111,7 +144,6 @@
*
* @param onDblClick the onDblClick event.
* @jsptagref.attributedescription The onDblClick JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onDblClick</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onDblClick JavaScript event for the HTML tbody tag."
*/
@@ -124,7 +156,6 @@
*
* @param onKeyDown the onKeyDown event.
* @jsptagref.attributedescription The onKeyDown JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onKeyDown</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onKeyDown JavaScript event for the HTML tbody tag."
*/
@@ -137,7 +168,6 @@
*
* @param onKeyUp the onKeyUp event.
* @jsptagref.attributedescription The onKeyUp JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onKeyUp</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onKeyUp JavaScript event for the HTML tbody tag."
*/
@@ -150,7 +180,6 @@
*
* @param onKeyPress the onKeyPress event.
* @jsptagref.attributedescription The onKeyPress JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onKeyPress</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onKeyPress JavaScript event for the HTML tbody tag."
*/
@@ -163,7 +192,6 @@
*
* @param onMouseDown the onMouseDown event.
* @jsptagref.attributedescription The onMouseDown JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseDown</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseDown JavaScript event for the HTML tbody tag."
*/
@@ -176,7 +204,6 @@
*
* @param onMouseUp the onMouseUp event.
* @jsptagref.attributedescription The onMouseUp JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseUp</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseUp JavaScript event for the HTML tbody tag."
*/
@@ -189,7 +216,6 @@
*
* @param onMouseMove the onMouseMove event.
* @jsptagref.attributedescription The onMouseMove JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseMove</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseMove JavaScript event for the HTML tbody tag."
*/
@@ -202,7 +228,6 @@
*
* @param onMouseOut the onMouseOut event.
* @jsptagref.attributedescription The onMouseOut JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseOut</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseOut JavaScript event for the HTML tbody tag."
*/
@@ -215,7 +240,6 @@
*
* @param onMouseOver the onMouseOver event.
* @jsptagref.attributedescription The onMouseOver JavaScript event for the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseOver</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseOver JavaScript event for the HTML tbody tag."
*/
@@ -228,7 +252,6 @@
*
* @param style the style
* @jsptagref.attributedescription The style of the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_style</i>
* @netui:attribute required="false" rtexprvalue="true" description="The style of the HTML tbody tag."
*/
@@ -243,7 +266,6 @@
*
* @param styleClass the style class
* @jsptagref.attributedescription The style class of the HTML tbody tag.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_style_class</i>
* @netui:attribute required="false" rtexprvalue="true" description="The style class of the HTML tbody tag."
*/
@@ -258,7 +280,6 @@
*
* @param title the title
* @jsptagref.attributedescription The title for the HTML tbody tag
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_title</i>
* @netui:attribute required="false" rtexprvalue="true" description="The title for the HTML tbody tag"
*/
@@ -271,7 +292,6 @@
* @param align the horizontal alignment
* @jsptagref.attributedescription The horizontal alignment of the HTML tbody tag.
- * @jsptagref.databindable true
* @jsptagref.attributesyntaxvalue <i>string_align</i>
* @netui:attribute required="false" rtexprvalue="true" description="The cell's horizontal alignment of the HTML tbody tag."
*/
@@ -285,7 +305,6 @@
*
* @param alignChar the horizontal alignment character
* @jsptagref.attributedescription The horizontal alignment character of the HTML tbody tag.
- * @jsptagref.databindable true
* @jsptagref.attributesyntaxvalue <i>string_alignChar</i>
* @netui:attribute required="false" rtexprvalue="true" description="The cell's horizontal alignment character of the HTML tbody tag."
*/
@@ -298,7 +317,6 @@
*
* @param alignCharOff
* @jsptagref.attributedescription The horizontal alignment character offset
- * @jsptagref.databindable true
* @jsptagref.attributesyntaxvalue <i>string_alignCharOff</i>
* @netui:attribute required="false" rtexprvalue="true" description="The cell's horizontal alignment character offset"
*/
@@ -311,7 +329,6 @@
*
* @param align the alignment
* @jsptagref.attributedescription The vertical alignment.
- * @jsptagref.databindable true
* @jsptagref.attributesyntaxvalue <i>string_align</i>
* @netui:attribute required="false" rtexprvalue="true" description="The vertical alignment of the HTML tbody tag"
*/
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/SpanCell.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/SpanCell.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/SpanCell.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/SpanCell.java Thu May 19 12:28:44 2005
@@ -93,7 +93,6 @@
*
* @param onClick the onClick event for the HTML span.
* @jsptagref.attributedescription The onClick JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onClick</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onClick JavaScript event."
*/
@@ -106,7 +105,6 @@
*
* @param onDblClick the onDblClick event for the HTML span.
* @jsptagref.attributedescription The onDblClick JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onDblClick</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onDblClick JavaScript event for the HTML span."
*/
@@ -119,7 +117,6 @@
*
* @param onKeyDown the onKeyDown event for the HTML span.
* @jsptagref.attributedescription The onKeyDown JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onKeyDown</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onKeyDown JavaScript event for the HTML span."
*/
@@ -132,7 +129,6 @@
*
* @param onKeyUp the onKeyUp event.
* @jsptagref.attributedescription The onKeyUp JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onKeyUp</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onKeyUp JavaScript event for the HTML span."
*/
@@ -145,7 +141,6 @@
*
* @param onKeyPress the onKeyPress event.
* @jsptagref.attributedescription The onKeyPress JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onKeyPress</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onKeyPress JavaScript event for the HTML span."
*/
@@ -158,7 +153,6 @@
*
* @param onMouseDown the onMouseDown event.
* @jsptagref.attributedescription The onMouseDown JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseDown</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseDown JavaScript event for the HTML span."
*/
@@ -171,7 +165,6 @@
*
* @param onMouseUp the onMouseUp event.
* @jsptagref.attributedescription The onMouseUp JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseUp</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseUp JavaScript event for the HTML span."
*/
@@ -184,7 +177,6 @@
*
* @param onMouseMove the onMouseMove event.
* @jsptagref.attributedescription The onMouseMove JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseMove</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseMove JavaScript event for the HTML span."
*/
@@ -197,7 +189,6 @@
*
* @param onMouseOut the onMouseOut event.
* @jsptagref.attributedescription The onMouseOut JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseOut</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseOut JavaScript event for the HTML span."
*/
@@ -210,7 +201,6 @@
*
* @param onMouseOver the onMouseOver event.
* @jsptagref.attributedescription The onMouseOver JavaScript event for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_onMouseOver</i>
* @netui:attribute required="false" rtexprvalue="true" description="The onMouseOver JavaScript event for the HTML span."
*/
@@ -223,7 +213,6 @@
*
* @param style the html style.
* @jsptagref.attributedescription The style for the HTML span
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_style</i>
* @netui:attribute required="false" rtexprvalue="true" description="The style for the HTML span"
*/
@@ -238,7 +227,6 @@
*
* @param styleClass the html style class.
* @jsptagref.attributedescription The style class for the HTML span
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_style_class</i>
* @netui:attribute required="false" rtexprvalue="true" description="The style class for the HTML span."
*/
@@ -253,7 +241,6 @@
*
* @param title
* @jsptagref.attributedescription The title for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_title</i>
* @netui:attribute required="false" rtexprvalue="true" description="The title for the HTML span."
*/
@@ -265,7 +252,6 @@
* Sets the lang attribute for the HTML span.
* @param lang
* @jsptagref.attributedescription The lang for the HTML span.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_lang</i>
* @netui:attribute required="false" rtexprvalue="true"
* description="The lang for the HTML span"
@@ -279,7 +265,6 @@
* Sets the dir attribute for the HTML span.
* @param dir
* @jsptagref.attributedescription The dir.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_dir</i>
* @netui:attribute required="false" rtexprvalue="true"
* description="The dir for the HTML span."
@@ -300,7 +285,6 @@
*
* @param tagId the the name of the tagId for the HTML span.
* @jsptagref.attributedescription The tagId.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_tagId</i>
* @netui:attribute required="false" rtexprvalue="true"
* description="String value. Sets the id (or name) attribute of the rendered HTML span."
@@ -317,7 +301,6 @@
* </p>
*
* @jsptagref.attributedescription The value of the visible text rendered inside of the HTML span.
- * @jsptagref.databindable false
* @netui:attribute required="true" rtexprvalue="true"
*/
public void setValue(String value) {
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/TemplateCell.java Thu May 19 12:28:44 2005
@@ -32,9 +32,9 @@
* to build UI that will POST data to a form, the NetUI {@link org.apache.beehive.netui.tags.html.TextBox} tag can
* be used as:
* <pre>
- * <netui-data:templateCell>
- * <netui:textBox dataSource="container.item.name"/>
- * </netui-data:templateCell>
+ * <netui-data:templateCell>
+ * <netui:textBox dataSource="container.item.name"/>
+ * </netui-data:templateCell>
* </pre>
* </p>
* <p>
@@ -62,9 +62,9 @@
* to build UI that will POST data to a form, the NetUI {@link org.apache.beehive.netui.tags.html.TextBox} tag can
* be used as:
* <pre>
- * <netui-data:templateCell>
- * <netui:textBox dataSource="container.item.name"/>
- * </netui-data:templateCell>
+ * <netui-data:templateCell>
+ * <netui:textBox dataSource="container.item.name"/>
+ * </netui-data:templateCell>
* </pre>
* </p>
* <p>
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/AbstractCallMethod.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/AbstractCallMethod.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/AbstractCallMethod.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/AbstractCallMethod.java Thu May 19 12:28:44 2005
@@ -19,42 +19,29 @@
import org.apache.beehive.netui.util.internal.InternalStringBuilder;
-// java imports
-
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-
import java.util.ArrayList;
import java.util.List;
-
import javax.servlet.jsp.JspException;
-// internal imports
import org.apache.beehive.netui.tags.AbstractClassicTag;
-
import org.apache.beehive.netui.util.Bundle;
import org.apache.beehive.netui.util.logging.Logger;
import org.apache.beehive.netui.util.type.TypeUtils;
-// external imports
-
/**
+ * <p>
+ * An abstract base class for tags that are capable of reflectively invoking methods. Specializations of this
+ * tag provide method implementations that locate the object on which to invoke the method and that handle
+ * any return value from the invoked method.
* <p/>
- * An abstract base class for tags that are capable of reflectively
- * invoking methods. Specializations of this tag provide method
- * implementations that locate the object on which to invoke the
- * method and that handle any return value from the invoked
- * method.
- * <p/>
- * <p/>
- * The <code>CallMethod</code> tag can have child tags of type
- * {@link MethodParameter}; these tags must be in the same
- * order as the parameter list in the method signature of the
- * method that will be invoked. To invoke an overloaded method, the
- * {@link MethodParameter#setType(String)} property must be set to the String
- * name of the type to pass to the method. If the type attribute values
- * on nested {@link MethodParameter} tags do not match any method signature,
- * an error will be reported in the page.
+ * <p>
+ * The <code>CallMethod</code> tag can have child tags of type {@link MethodParameter}; these tags must be in the same
+ * order as the parameter list in the method signature of the method that will be invoked. To invoke an overloaded
+ * method, the {@link MethodParameter#setType(String)} property must be set to the String name of the type to pass
+ * to the method. If the type attribute values on nested {@link MethodParameter} tags do not match any method
+ * signature, an error will be reported in the page.
* </p>
*/
public abstract class AbstractCallMethod
@@ -73,11 +60,16 @@
private boolean _verifyTypes = false;
/**
- * Sets the identifier at which the result of invoking the method will
- * stored.
+ * Sets the identifier at which the result of invoking the method will stored. Once stored, the
+ * result of the reflective invocation will be available via the JSP EL implicit object
+ * <code>${pageScope}</code> with the attribute name set via this property.
*
* @param resultId a String that names an attribute in the PageContext's
* attribute map where any resulting object will be stored.
+ * @jsptagref.attributedescription
+ * Sets the identifier at which the result of invoking the method will stored. Once stored, the
+ * result of the reflective invocation will be available via the JSP EL implicit object
+ * <code>${pageScope}</code> with the attribute name set via this property.
* @netui:attribute required="false"
*/
public void setResultId(String resultId) {
@@ -85,11 +77,11 @@
}
/**
- * Sets whether or not to report exceptions to the page when errors
- * occur invoking a method on an object.
+ * Sets whether or not to report exceptions to the page when errors occur invoking a method on an object.
*
- * @param failOnError a boolean that defines whether or not exceptions
- * should be thrown when invocation fails.
+ * @param failOnError a boolean that defines whether or not exceptions should be thrown when invocation fails.
+ * @jsptagref.attributedescription
+ * Sets whether or not to report exceptions to the page when errors occur invoking a method on an object.
* @netui:attribute required="false"
*/
public void setFailOnError(boolean failOnError) {
@@ -100,6 +92,8 @@
* Sets the name of a method to invoke on the target object.
*
* @param method the name of the method to invoke
+ * @jsptagref.attributedescription
+ * Sets the name of a method to invoke on the target object.
* @netui:attribute required="true"
*/
public void setMethod(String method) {
@@ -107,11 +101,9 @@
}
/**
- * Add a paramter that will be passed as an argument to the method that
- * will be invoked. This method is implemented to allow the
- * the {@link MethodParameter} tags to register
- * their parameters. This object is passed in the position that it
- * appeared in the set of child {@link MethodParameter} tags.
+ * Add a paramter that will be passed as an argument to the method that will be invoked. This method
+ * is implemented to allow the the {@link MethodParameter} tags to register their parameters. This
+ * object is passed in the position that it appeared in the set of child {@link MethodParameter} tags.
*
* @param type a String of the type or class name of this parameter
* @param parameter an object that should be passed as an argument to the invoked method
@@ -132,12 +124,11 @@
}
/**
- * Causes the body of this tag to be rendered; only {@link MethodParameter}
- * tags are allowed to be contained inside of this tag. The body content is
- * never rendered.
+ * Causes the body of this tag to be rendered; only {@link MethodParameter} tags are allowed to be
+ * contained inside of this tag. The output of rendering the body is never written into the
+ * output stream of the servlet.
*
- * @return EVAL_BODY_BUFFERED
- * @see MethodParameter
+ * @return {@link #EVAL_BODY_BUFFERED}
*/
public int doStartTag()
throws JspException {
@@ -148,18 +139,17 @@
* Reflectively invokes the method specified by the <code>method</code> attribute,
* {@link #findMethod(Object, String, boolean)}. The arguments passed to the method are taken from any nested
* {@link MethodParameter} tags. When the parameters which are added by the
- * {@link MethodParameter} tags are {@link java.lang.String} types, an attempt is made
- * to convert each of these parameters into the type expected by the method. This
- * conversion is done using the {@link TypeUtils#convertToObject(java.lang.String, java.lang.Class)}
- * method. If a String can not be converted do the type expected by the method,
- * an exception is thrown and the error is reported in the tag. Any return value
- * that results from invoking the given method is passed to the subclass implementation
- * of the method {@link #handleReturnValue(java.lang.Object)}.
+ * {@link MethodParameter} tags are {@link java.lang.String} types, an attempt is made to convert each of
+ * these parameters into the type expected by the method. This conversion is done using the
+ * {@link TypeUtils#convertToObject(java.lang.String, java.lang.Class)} method. If a String can not
+ * be converted do the type expected by the method, an exception is thrown and the error is reported
+ * in the tag. Any return value that results from invoking the given method is passed to the
+ * subclass implementation of the method {@link #handleReturnValue(java.lang.Object)}.
*
- * @return EVAL_PAGE to continue evaluating the page
+ * @return {@link #EVAL_PAGE} to continue evaluating the page
* @throws JspException if there are errors. All exceptions that may be thrown
* in the process of reflectively invoking the method and performing type
- * conversion are reported as @see javax.servlet.jsp.JspException.
+ * conversion are reported as {@link JspException}
* @see #findMethod(Object, String, boolean)
* @see #handleReturnValue(java.lang.Object)
* @see MethodParameter
@@ -289,21 +279,22 @@
/**
* <p/>
- * Resolve the object on which the method should be invoked. If there are
- * errors resolving this object, this method will throw an <code>ObjectNotFoundException</code>.
- * <br/>
- * <br/>
- * If the object is not found but no exception occurred, this method should return null.
+ * Resolve the object on which the method should be invoked. If there are errors resolving this object,
+ * this method will throw an {@link ObjectNotFoundException}.
+ * </p>
+ * <p>
+ * If the object is not found but no exception occurred, this method returns <code>null</code>.
* </p>
*
- * @return the object on which to reflectively invoke the method.
+ * @return the object on which to reflectively invoke the method or <code>null</code> if the
+ * object was not found and no exception occurred.
* @throws ObjectNotFoundException if an exception occurred attempting to resolve an object
*/
protected abstract Object resolveObject() throws ObjectNotFoundException, JspException;
/**
- * Get the name of the object that is the target of the invocation. This is
- * a generic method for this tag that enables more specific error reporting.
+ * Get the name of the object that is the target of the invocation. This is a generic method for this
+ * tag that enables more specific error reporting.
*
* @return a name for the object on which the method will be invoked.
*/
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallMethod.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallMethod.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallMethod.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallMethod.java Thu May 19 12:28:44 2005
@@ -98,7 +98,6 @@
*
* @param object the object on which to invoke a method
* @jsptagref.attributedescription A string or data binding expression that names the class on which to call a method.
- * @jsptagref.databindable Read Only
* @jsptagref.attributesyntaxvalue <i>string_or_expression_object</i>
* @netui:attribute required="false" rtexprvalue="true"
*/
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java Thu May 19 12:28:44 2005
@@ -17,74 +17,81 @@
*/
package org.apache.beehive.netui.tags.databinding.invoke;
-// java imports
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-// internal imports
import org.apache.beehive.netui.pageflow.PageFlowUtils;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
-
import org.apache.beehive.netui.util.Bundle;
-
import org.apache.beehive.netui.util.logging.Logger;
-// external imports
-
/**
- * A tag that is used to call a method on the current {@link org.apache.beehive.netui.pageflow.PageFlowController}.
- * The PageFlow on which to call the method is found given the location of the JSP page in the
- * webapp; if no PageFlow is found in the current directory, an {@link ObjectNotFoundException} is
- * thrown and the tag execution fails.
- * <p>This tag extends the {@link CallMethod} tag, which defines additional attributes.</p>
- * <p>Once the method has been called, any return value is set in the
- * {@link javax.servlet.jsp.PageContext} attribute map under the <code>resultId</code>
- * attribute that is provided on the {@link CallMethod} tag. In the case that the return
- * value is a primitive type, the primitive type's object wrapper is set in the
- * <code>PageContext</code> under the <code>resultId</code> key.</p>
+ * <p>
+ * Calls methods on the current Page Flow. If no Controller file is found, an
+ * {@link ObjectNotFoundException} is thrown and the tag execution fails.
+ * Any return value is stored in the <code>${pageScope...}</code> data binding context object under the
+ * attribute specified by the <code>resultId</code> attribute.
+ * </p>
+ * <p>
+ * For example, given a <code>hello</code> method and the following <netui-data:callPageFlow> tag:
+ * <pre>
+ * <netui-data:callPageFlow method="hello" resultId="helloMessage"/>
+ * </pre>
+ * <p>
+ * the result of the call is stored in the <code>${pageScope}</code> JSP EL implicit object under
+ * the attribute <code>helloMessage</code>. It will be accessible via <code>${pageScope.helloMessage}</code> and
+ * can be used as:
+ * <pre>
+ * <netui:span value="<b>${pageScope.helloMessage}</b>"/>
+ * </pre>
+ * </p>
+ * <p>
+ * In JSP scriptlet, the result can be retrieved by calling the <code>getAttribute()</code> method on the
+ * {@link javax.servlet.jsp.PageContext javax.servlet.jsp.PageContext} object:
+ * <pre>
+ * <%= pageContext.getAttribute("helloMessage") %>
+ * </pre>
+ * </p>
*
- * @jsptagref.tagdescription Calls methods on the Controller file (= JPF file) in the same directory
- * as the JSP page. If no Controller file
- * is found, an {@link ObjectNotFoundException} is
- * thrown and the tag execution fails.
- * Any return value is stored in the
- * <code>{pageContext...}</code> data binding context object under the
- * attribute specified by the <code>resultId</code>
- * attribute.
- * <p/>
- * <p>For example, if you call the <code>hello</code> method with the following <netui-data:callPageFlow> tag...
- * <p/>
- * <pre> <netui-data:callPageFlow
- * method="hello"
- * <b>resultId="helloMessage"</b>
- * /></pre>
- * <p/>
- * <p>...the result of the call is stored in the <code>{pageContext...}</code> data binding context under the
- * attribute <code>helloMessage</code>.
- * <p/>
- * <p>The result can be retrieved with the data binding expression
- * <code>{pageContext.helloMessage}</code>
- * <p/>
- * <pre> <netui:span value="<b>${pageContext.helloMessage}</b>"/></pre>
- * <p/>
- * In a scriptlet, the result can be retrieved by calling the <code>getAttribute()</code>
- * method on the
+ * @jsptagref.tagdescription
+ * Calls methods on the current Page Flow. If no Controller file is found, an
+ * {@link ObjectNotFoundException} is thrown and the tag execution fails.
+ * Any return value is stored in the <code>${pageScope...}</code> data binding context object under the
+ * attribute specified by the <code>resultId</code> attribute.
+ * <p/>
+ * <p>
+ * For example, given a <code>hello</code> method and the following <netui-data:callPageFlow> tag:
+ * <pre>
+ * <netui-data:callPageFlow method="hello" resultId="helloMessage"/>
+ * </pre>
+ * <p>
+ * the result of the call is stored in the <code>${pageScope}</code> JSP EL implicit object under
+ * the attribute <code>helloMessage</code>. It will be accessible via <code>${pageScope.helloMessage}</code> and
+ * can be used as:
+ * <pre>
+ * <netui:span value="<b>${pageScope.helloMessage}</b>"/>
+ * </pre>
+ * </p>
+ * <p>
+ * In JSP scriptlet, the result can be retrieved by calling the <code>getAttribute()</code> method on the
* {@link javax.servlet.jsp.PageContext javax.servlet.jsp.PageContext} object:
- * <p/>
- * <pre> <%= pageContext.getAttribute("helloMessage") %></pre>
- * <p/>
- * @example In the following sample, the <netui-data:callPageFlow> tag calls the
- * sumCartItems method on the Controller file. The
- * {@link org.apache.beehive.netui.tags.html.Label} tag
+ * <pre>
+ * <%= pageContext.getAttribute("helloMessage") %>
+ * </pre>
+ * </p>
+ * @example
+ * In the following sample, the <netui-data:callPageFlow> tag calls the
+ * sumCartItems method on the Controller file. The {@link org.apache.beehive.netui.tags.html.Span} tag
* accesses the result through the ${pageScope} data binding context.
- * <pre> <netui-data:callPageFlow method="sumCartItems" resultId="cartSum">
+ * <pre>
+ * <netui-data:callPageFlow method="sumCartItems" resultId="cartSum">
* <netui-data:methodParameter value="${pageFlow.cart.lineItemList}"/>
* </netui-data:callPageFlow>
* ...
- * <netui:span value="${pageContext.cartSum}"/></pre>
- * @netui:tag name="callPageFlow" description="Use this tag to call a method on the current page flow controller."
- * deprecated="true"
+ * <netui:span value="${pageScope.cartSum}"/>
+ * </pre>
+ * @netui:tag name="callPageFlow" deprecated="true"
+ * description="Use this tag to call a method on the current page flow controller."
*/
public class CallPageFlow
extends CallMethod {
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/MethodParameter.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/MethodParameter.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/MethodParameter.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/MethodParameter.java Thu May 19 12:28:44 2005
@@ -17,100 +17,116 @@
*/
package org.apache.beehive.netui.tags.databinding.invoke;
-// java imports
-
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
-// internal imports
import org.apache.beehive.netui.tags.AbstractClassicTag;
-
import org.apache.beehive.netui.util.Bundle;
-// external imports
-
/**
+ * <p>
* A tag that is used to add an argument to a method that will be called
* on some object. This tag can be nested within tags that extend the AbstractCallMethod
* class. Those tags are:
* <ul>
- * <li><netui-data:callControl></li>
- * <li><netui-data:callMethod></li>
- * <li><netui-data:callPageFlow></li>
- * <li><netui-data:choiceMethod></li>
+ * <li>{@link CallMethod}</li>
+ * <li>{@link CallPageFlow}</li>
* </ul>
- * <p/>
- * The <code>methodParameter</code> tags are used to parameterize the method
- * that the {@link AbstractCallMethod} class will call; each <code>methodParameter</code>
- * tag represents a single parameter. These tags are evaluated in order and the parameters
- * they describe are passed in order.</p>
- * <p/>
- * Overloaded methods on an object can be invoked by setting the <code>type</code>
- * attribute on each <code>methodParameter</code> tag that is embedded in
- * a method invocation tag. The type name must exactly match the primitive
- * type name or the fully qualified class name of the argument. The
- * <code>methodParameter</code> tags must also be in the order that they
- * will be passed to this method. The value of the type attribute must be
- * an exact match of the type if it were printed after having been
- * accessed through Java reflection.</p>
- * <p/>
- * In order to pass <code>null</code> as an argument to a method, the
- * null attribute must be set on this tag. Either the null attribute or the
- * value attribute must be set on this tag.</p>
+ * </p>
+ * <p>
+ * The {@link MethodParameter} tags are used to parameterize the method that the {@link AbstractCallMethod} class
+ * will call; each <code>methodParameter</code> tag represents a single parameter. These tags are evaluated
+ * in order and the parameters they describe are passed in order.
+ * </p>
+ * <p>
+ * Overloaded methods on an object can be invoked by setting the <code>type</code> attribute on each
+ * <code>methodParameter</code> tag that is embedded in a method invocation tag. The type name must
+ * exactly match the primitive type name or the fully qualified class name of the argument. The
+ * <code>methodParameter</code> tags must also be in the order that they will be passed to this method.
+ * The value of the type attribute must be an exact match of the type if it were printed after having been
+ * accessed through Java reflection.
+ * </p>
+ * <p>
+ * In order to pass <code>null</code> as an argument to a method, the null attribute must be set on this tag.
+ * Either the null attribute or the value attribute must be set on this tag.
+ * </p>
+ * <p>
+ * This example shows how to pass parameters to the method call <code>foo(int integer, String string)</code>.
+ * <pre>
+ * <netui-data:methodParamter value="42"/>
+ * <netui-data:methodParamter null="true"/>
+ * </pre>
+ * This will correspond to the method call:<br/>
+ * <pre>
+ * foo(42, null);
+ * </pre>
+ * The following sample shows how to pass parameters to the method call <code>foo(int integer, String string)</code>
+ * where the class has both of the methods <code>foo(int integer, String string)</code> and
+ * <code>foo(Integer integer, String string)</code>.
+ * <pre>
+ * <netui-data:methodParamter type="int" value="42"/>
+ * <netui-data:methodParamter type="java.lang.String" null="true"/>
+ * </pre>
+ * This will correspond to the method call:<br/>
+ * <pre>
+ * foo(42, null);
+ * </pre>
+ * </p>
*
- * @jsptagref.tagdescription Provides an argument to a method-calling tag.
- * The <netui-data:methodParameter> tag can be nested within the following
- * method-calling tags:
- * <blockquote>
+ * @jsptagref.tagdescription
+ * <p>
+ * A tag that is used to add an argument to a method that will be called
+ * on some object. This tag can be nested within tags that extend the AbstractCallMethod
+ * class. Those tags are:
* <ul>
- * <li>{@link org.apache.beehive.netui.tags.databinding.invoke.CallControl}</li>
- * <li>{@link org.apache.beehive.netui.tags.databinding.invoke.CallMethod}</li>
- * <li>{@link org.apache.beehive.netui.tags.databinding.invoke.CallPageFlow}</li>
+ * <li>{@link CallMethod}</li>
+ * <li>{@link CallPageFlow}</li>
* </ul>
- * </blockquote>
- * <p/>
- * <p/>
- * Each <netui-data:methodParameter>
- * tag represents a single parameter. A group of <netui-data:methodParameter>
- * tags are evaluated in order and the parameters
- * they describe are passed in order.</p>
- * <p/>
- * <p/>
- * Overloaded methods on an object can be invoked by setting the <code>type</code>
- * attribute on each <netui-data:methodParameter> tag that is embedded in
- * a method-calling tag. The type name must exactly match the primitive
- * type name or the fully qualified class name of the argument. The
- * <netui-data:methodParameter> tags must also be in the order that they
- * will be passed to the method. The value of the <code>type</code> attribute must be
- * an exact match of the type as if it were printed after having been
- * accessed through Java reflection.</p>
- * <p/>
- * <p/>
- * In order to pass <code>NULL</code> as an argument to a method, the
- * <code>null</code> attribute must be set on this tag. Either the <code>null</code>
- * attribute or the
- * <code>value</code> attribute must be set on this tag.</p>
- * @example The following sample shows how to pass parameters to the method call
- * <code>foo(int integer, String string)</code>.
- * <p/>
- * <pre> <netui-data:methodParamter value="42"/>
- * <netui-data:methodParamter null="true"/></pre>
- * <p/>
+ * </p>
+ * <p>
+ * The {@link MethodParameter} tags are used to parameterize the method that the {@link AbstractCallMethod} class
+ * will call; each <code>methodParameter</code> tag represents a single parameter. These tags are evaluated
+ * in order and the parameters they describe are passed in order.
+ * </p>
+ * <p>
+ * Overloaded methods on an object can be invoked by setting the <code>type</code> attribute on each
+ * <code>methodParameter</code> tag that is embedded in a method invocation tag. The type name must
+ * exactly match the primitive type name or the fully qualified class name of the argument. The
+ * <code>methodParameter</code> tags must also be in the order that they will be passed to this method.
+ * The value of the type attribute must be an exact match of the type if it were printed after having been
+ * accessed through Java reflection.
+ * </p>
+ * <p>
+ * In order to pass <code>null</code> as an argument to a method, the null attribute must be set on this tag.
+ * Either the null attribute or the value attribute must be set on this tag.
+ * </p>
+ *
+ * @example
+ * <p>
+ * This example shows how to pass parameters to the method call <code>foo(int integer, String string)</code>.
+ * <pre>
+ * <netui-data:methodParamter value="42"/>
+ * <netui-data:methodParamter null="true"/>
+ * </pre>
* This will correspond to the method call:<br/>
- * <p/>
- * <pre> foo(42, null);</pre>
- * <p/>
- * The following sample shows how to pass parameters to the method call
- * <code>foo(int integer, String string)</code>
- * where the class has both of the methods <code>foo(int integer, String string)</code>
- * and <code>foo(Integer integer, String string)</code>.
- * <p/>
- * <pre> <netui-data:methodParamter type="int" value="42"/>
- * <netui-data:methodParamter type="java.lang.String" null="true"/></pre>
- * <p/>
- * This will correspond to the method call:</p>
- * <pre> foo(42, null);</pre>
- * @netui:tag name="methodParameter" description="Use this tag to add an argument to a method that will be called on some object."
+ * <pre>
+ * foo(42, null);
+ * </pre>
+ * The following sample shows how to pass parameters to the method call <code>foo(int integer, String string)</code>
+ * where the class has both of the methods <code>foo(int integer, String string)</code> and
+ * <code>foo(Integer integer, String string)</code>.
+ * <pre>
+ * <netui-data:methodParamter type="int" value="42"/>
+ * <netui-data:methodParamter type="java.lang.String" null="true"/>
+ * </pre>
+ * This will correspond to the method call:<br/>
+ * <pre>
+ * foo(42, null);
+ * </pre>
+ * </p>
+ *
+ * @netui:tag name="methodParameter"
+ * description="Use this tag to add an argument to a method that will be called on some object."
*/
public class MethodParameter
extends AbstractClassicTag {
@@ -178,7 +194,6 @@
* <tr><td>addToPrice(int price)</td><td>price</td><td><code>int</code></td></tr>
* <tr><td>addToPrice(Integer price)</td><td>price</td><td><code>java.lang.Integer</code></td></tr>
* </table>
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_type</i>
* @netui:attribute required="false"
*/
@@ -196,9 +211,7 @@
* tag.
*
* @param value a String value which may be an expression
- * @jsptagref.attributedescription The value of the method parameter that will be passed
- * to the method call.
- * @jsptagref.databindable true
+ * @jsptagref.attributedescription The value of the method parameter that will be passed to the method call.
* @jsptagref.attributesyntaxvalue <i>expression_value</i>
* @netui:attribute required="false" rtexprvalue="true"
*/
@@ -214,7 +227,6 @@
* <code>true</code> null will be passed; otherwise the value from the value attribute
* will be passed.
* @jsptagref.attributedescription Boolean. Determines if the parameter passed to the method is null.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>boolean_passNullValue</i>
* @netui:attribute required="false"
*/
@@ -227,7 +239,7 @@
* a {@link AbstractCallMethod} tag and that one of the "null" and "value"
* attributes are set.
*
- * @return SKIP_BODY
+ * @return {@link #SKIP_BODY}
* @throws JspException if an error occurs getting the parameter
*/
public int doStartTag()
@@ -254,7 +266,7 @@
* Prepare the value to pass up to the {@link AbstractCallMethod} type
* parent.
*
- * @return EVAL_PAGE to continue evaluating the page
+ * @return {@link #EVAL_PAGE} to continue evaluating the page
*/
public int doEndTag()
throws JspException {
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/ObjectNotFoundException.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/ObjectNotFoundException.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/ObjectNotFoundException.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/ObjectNotFoundException.java Thu May 19 12:28:44 2005
@@ -17,12 +17,6 @@
*/
package org.apache.beehive.netui.tags.databinding.invoke;
-// java imports
-
-// internal imports
-
-// external imports
-
/**
* An exception thrown when an object on which to invoke a method can not
* be found. The {@link CallMethod#resolveObject()} call throws this exception.
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/Message.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/Message.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/Message.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/Message.java Thu May 19 12:28:44 2005
@@ -25,28 +25,63 @@
import java.util.List;
/**
- * Tag handler class for the <netui-data:message> tag. Provides a message schema, which can be parameterized with message content.
- *
- * @jsptagref.tagdescription This tag provides a message schema, which can be parameterized to
- * construct customizable messages.
+ * <p>
+ * This tag provides a message schema, which can be parameterized to construct customizable messages.
+ * Curly-braces are used to identify argument place holders in the schema:
+ * <p/>
+ * For example, the following will format a message and place the result in a {@link javax.servlet.jsp.PageContext}
+ * attribute named <code>message</code>.
+ * <pre>
+ * <%
+ * pageContext.setAttribute("msgSkeleton", new String("Hello {0}. {1} {2}, the current date and time are {3}."));
+ * %>
+ * <netui-data:message value="${pageScope.msgSkeleton}" resultId="message">
+ * </pre>
+ * </p>
+ * <p>
+ * The followingn example defines a message schema, while the {@link MessageArg} tags provide the parameters that
+ * plug values into the schema. In the following example, the <netui-data:message> tag uses the <code>value</code>
+ * attribute to bind to the message schema (which was earlier added to the
+ * {@link javax.servlet.jsp.PageContext javax.servlet.jsp.PageContext} object. The two <netui-data:messageArg>
+ * tags provide the parameters to plug into the schema.
+ * <pre>
+ * <%
+ * pageContext.setAttribute("msgSkeleton", new String("To read about {0}, go to {1}."));
+ * %>
+ * ...
+ * <netui-data:message value="${pageScope.msgSkeleton}" resultId="message">
+ * <netui-data:messageArg value="messaging"/>
+ * <netui-data:messageArg value="my web page"/>
+ * </netui-data:message>
+ * ...
+ * <netui:span value="${pageScope.message}"/></pre>
* <p/>
- * <p>Curly-braces are used to identify argument place holders in the schema:
+ * <p>The following message is output to the JSP page:<p>
+ * <p/>
+ * <pre>
+ * To read about messaging, go to my web page.
+ * </pre>
+ * </p>
+ *
+ * @jsptagref.tagdescription
+ * <p>
+ * This tag provides a message schema, which can be parameterized to construct customizable messages.
+ * Curly-braces are used to identify argument place holders in the schema:
* <p/>
* <pre>
* <%
* pageContext.setAttribute("msgSkeleton", new String("Hello {0}. {1} {2}, the current date and time are {3}."));
* %>
* <netui-data:message value="${pageScope.msgSkeleton}" resultId="message"></pre>
- * @example Defines a message schema, while the
- * {@link org.apache.beehive.netui.tags.databinding.message.MessageArg} tags
- * provide the parameters that plug values into the schema.
- * In the following example, the <netui-data:message> tag
- * uses the <code>value</code> attribute to bind to the message schema (which
- * was earlier added to the
- * {@link javax.servlet.jsp.PageContext javax.servlet.jsp.PageContext} object.
- * The two <netui-data:messageArg> tags provide the parameters to plug into the
- * schema.
- * <pre> <%
+ * @example
+ * <p>
+ * The followingn example defines a message schema, while the {@link MessageArg} tags provide the parameters that
+ * plug values into the schema. In the following example, the <netui-data:message> tag uses the <code>value</code>
+ * attribute to bind to the message schema (which was earlier added to the
+ * {@link javax.servlet.jsp.PageContext javax.servlet.jsp.PageContext} object. The two <netui-data:messageArg>
+ * tags provide the parameters to plug into the schema.
+ * <pre>
+ * <%
* pageContext.setAttribute("msgSkeleton", new String("To read about {0}, go to {1}."));
* %>
* ...
@@ -59,12 +94,18 @@
* <p/>
* <p>The following message is output to the JSP page:<p>
* <p/>
- * <pre> To read about messaging, go to my web page.</pre>
+ * <pre>
+ * To read about messaging, go to my web page.
+ * </pre>
+ * </p>
+ *
+ * @deprecated This tag has been deprecated in favor of the i18n tags available in JSTL.
* @netui:tag name="message"
- * description="Allows you to format messages according to any sequence you want, using one or more values from arguments defined in MessageArg tag(s). The results are available to the page context."
+ * deprecated="true"
+ * description="Allows you to format messages according to any sequence you want, using one or more values from arguments defined in MessageArg tag(s). The results are available to the page context."
*/
public class Message
- extends AbstractClassicTag {
+ extends AbstractClassicTag {
public static final String MESSAGE_ARG_KEY = "netui_bundleMessageArguments";
@@ -77,8 +118,14 @@
}
/**
- * @jsptagref.attributedescription The id of the resulting string.
- * @jsptagref.databindable false
+ * Set the attribute name under which the output formatted message will be available. The message
+ * will be stored in the JSP EL implicit object <code>pageScope</code>. If the value of this attribute
+ * is <code>foo</code>, the resulting message will be available with <code>${pageScope.foo}</code>.
+ *
+ * @jsptagref.attributedescription
+ * Set the attribute name under which the output formatted message will be available. The message
+ * will be stored in the JSP EL implicit object <code>pageScope</code>. If the value of this attribute
+ * is <code>foo</code>, the resulting message will be available with <code>${pageScope.foo}</code>.
* @jsptagref.attributesyntaxvalue <i>string_result</i>
* @netui:attribute required="true"
*/
@@ -87,8 +134,25 @@
}
/**
- * @jsptagref.attributedescription A <code>pageScope</code> or <code>requestScope</code> databinding expression.
- * @jsptagref.databindable true
+ * <p>
+ * Set the object to use when formatting a message. This value should be either a String or be convertable
+ * to a String via its {@link Object#toString()} method. In ordet for format the message, this value
+ * should appear as:
+ * <pre>
+ * Hello, {0}!
+ * </pre>
+ * where the <code>{0}</code> can be filled in during formatting via the {@link MessageArg} tag.
+ * </p>
+ * @jsptagref.attributedescription
+ * <p>
+ * Set the object to use when formatting a message. This value should be either a String or be convertable
+ * to a String via its {@link Object#toString()} method. In ordet for format the message, this value
+ * should appear as:
+ * <pre>
+ * Hello, {0}!
+ * </pre>
+ * where the <code>{0}</code> can be filled in during formatting via the {@link MessageArg} tag.
+ * </p>
* @jsptagref.attributesyntaxvalue <i>expression_value</i>
* @netui:attribute required="true" rtexprvalue="true"
*/
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/MessageArg.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/MessageArg.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/MessageArg.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/message/MessageArg.java Thu May 19 12:28:44 2005
@@ -17,26 +17,30 @@
*/
package org.apache.beehive.netui.tags.databinding.message;
-// java imports
-
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
-// internal imports
import org.apache.beehive.netui.tags.AbstractClassicTag;
-// external imports
-
/**
- * Tag handler class for the <netui-data:messageArg> tag. Provides message for the {@link Message} tag.
+ * <p>
+ * This tag should be used in conjunction with the {@link Message} tag to provide a message argument to the
+ * message format provided in the {@link Message#setValue(Object)} method. Before formatting, the
+ * value of this tag will be substituted into the message.
+ * </p>
*
- * @jsptagref.tagdescription Provides a parameter value to a message schema.
- * <p/>
- * <p>The message schema is defined by a {@link Message} tag.
- * @example <p>For an example that uses the <netui-data:messageArg>
- * tag, see the {@link Message} description.
+ * @jsptagref.tagdescription
+ * <p>
+ * This tag should be used in conjunction with the {@link Message} tag to provide a message argument to the
+ * message format provided in the {@link Message#setValue(Object)} method. Before formatting, the
+ * value of this tag will be substituted into the message.
+ * </p>
+ * @example
+ * <p>For an example that uses the <netui-data:messageArg> tag, see the {@link Message} description.
+ * @deprecated This tag has been deprecated in favor of the i18n tags available in JSTL.
* @netui:tag name="messageArg"
- * description="Allows you to set values that are used as arguments to the Message tag. The formatted message results are available to the page context."
+ * deprecated="true"
+ * description="Allows you to set values that are used as arguments to the Message tag. The formatted message results are available to the page context."
*/
public class MessageArg
extends AbstractClassicTag {
@@ -49,7 +53,6 @@
/**
* @jsptagref.attributedescription A string value for the argument.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_argument</i>
* @netui:attribute required="true" rtexprvalue="true"
*/
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/pageinput/DeclarePageInput.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/pageinput/DeclarePageInput.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/pageinput/DeclarePageInput.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/pageinput/DeclarePageInput.java Thu May 19 12:28:44 2005
@@ -28,105 +28,78 @@
import org.apache.beehive.netui.tags.AbstractSimpleTag;
/**
- * <p/>
- * The DeclarePageInput tag is used to declare variables that are passed to the page from
- * the page flow. A page input variable has a lifetime of the page in which it
- * is declared and can be referenced using the <code>pageInput</code> implicit object.
- * The <code>name</code> attribute here is used as the identifier for the variable inside
- * of this binding context, and the <code>type</code> attribute is used to identify
- * the expected type of this variable.
+ * <p>
+ * The DeclarePageInput tag is used to declare variables that are passed as outputs of Page Flow actions to a
+ * JSP. This allows pages to declare a data contract that invoking actions must satisfy in order to
+ * successfully render a page; in essence, this is a simple method signature for the JSP.
+ * </p>
+ * <p>
+ * Page inputs are added to a Page Flow's {@link org.apache.beehive.netui.pageflow.Forward} class via the
+ * {@link org.apache.beehive.netui.pageflow.Forward#addActionOutput(String, Object)} method. From the page's
+ * perspective, the action outputs are known as <i>page inputs</i> and are available via the JSP EL
+ * implicit object <code>pageInput</code> using the name given them on the
+ * {@link org.apache.beehive.netui.pageflow.Forward} and set on this tag via {@link #setName(String)}.
+ * </p>
+ * <p>
+ * A page input can be declared to be required; if required, the page input must be available in
+ * the map of action outputs passed to the page.
+ * </p>
+ * <p>
+ * For example, to add an actiout output called <code>profile</code> to a {@link org.apache.beehive.netui.pageflow.Forward}
+ * an action would contain code like:<br/>
+ * <pre>
+ * forward.addActionOutput("profile", yourProfile);
+ * </pre>
+ * In order to declare this as a page input in a JSP, the page would contain a tag as:
+ * <pre>
+ * <netui-data:declarePageInput name="profile" type="org.someprofile.ProfileBean"/>
+ * </pre>
+ * and the <code>profile</code> object could be referenced in the JSP as:
+ * <pre>
+ * ${pageInput.profile}
+ * </pre>
* </p>
*
+ * @jsptagref.tagdescription
+ * <p>
+ * The DeclarePageInput tag is used to declare variables that are passed as outputs of Page Flow actions to a
+ * JSP. This allows pages to declare a data contract that invoking actions must satisfy in order to
+ * successfully render a page; in essence, this is a simple method signature for the JSP.
+ * </p>
+ * <p>
+ * Page inputs are added to a Page Flow's {@link org.apache.beehive.netui.pageflow.Forward} class via the
+ * {@link org.apache.beehive.netui.pageflow.Forward#addActionOutput(String, Object)} method. From the page's
+ * perspective, the action outputs are known as <i>page inputs</i> and are available via the JSP EL
+ * implicit object <code>pageInput</code> using the name given them on the
+ * {@link org.apache.beehive.netui.pageflow.Forward} and set on this tag via {@link #setName(String)}.
+ * </p>
+ * <p>
+ * A page input can be declared to be required; if required, the page input must be available in
+ * the map of action outputs passed to the page.
+ * </p>
+ * <p>
+ * For example, to add an actiout output called <code>profile</code> to a {@link org.apache.beehive.netui.pageflow.Forward}
+ * an action would contain code like:<br/>
* <pre>
- *
- * @jsptagref.tagdescription <p>
- * Declares variables that are passed from
- * the Controller file to the JSP page.
- * <p/>
- * <p/>
- * The variable's lifetime is the same as that of the JSP page on which it
- * is declared.
- * <p/>
- * <p/>
- * On the Controller file, use the <code>addPageInput</code> method
- * (a method on the {@link org.apache.beehive.netui.pageflow.Forward Forward} class)
- * to make the variable available to the <netui-data:declarePageInput> tag.
- * <p/>
- * <pre>
- * Forward f = new Forward("success");
- * f.addPageInput("myData", new MyData());
- * </pre>
- * <p/>
- * Then, on the JSP page, declare the variable with the <netui-data:declarePageInput> tag.
- * <p/>
- * <pre> <netui-data:declarePageInput name="<b>myData</b>" type="myPageFlow.MyPageFlowController.MyData"/></pre>
- * <p/>
- * <p/>
- * Once declared, the variable can be referenced using the
- * <code>pageInput</code> data binding context.
- * The <code>name</code> attribute is used as the identifier for the variable inside
- * of this binding context, and the <code>type</code> attribute is used to identify
- * the expected type of this variable.
- * </p>
- * <p/>
- * <pre> <netui:span value="<b>${pageInput.myData}</b>"/></pre>
- * <p/>
- * <p>Using the <netui-data:declarePageInput> has the following advantages
- * <p/>
- * <blockquote>
- * <ul>
- * <li>The presence of <netui-data:declarePageInput> tags in a JSP file
- * helps to indicate clearly the type of data expected at run time. This
- * information about the incoming data helps your team understand any
- * data dependencies a given JSP page may have on the Controller file.</li>
- * </ul>
- * </blockquote>
- * @example This sample shows how a variable, <code>foo</code>, is defined in the Controller file,
- * and its value is
- * passed to a JSP page by using the <code>addPageInput</code> method and the
- * <netui-data:declarePageInput> tag.
- * <h4>Code in the Controller file...</h4>
- * <p/>
- * <pre>
- * @Jpf.Action(
- * forwards={
- * @Jpf.Forward(name="simple", path="simple.jsp")
- * }
- * )
- * public Forward simple()
- * {
- * Forward f = new Forward("simple");
- * f.addPageInput("fooBean", new FooBean());
- * return f;
- * }
- * <p/>
- * public static class FooBean
- * {
- * private String foo = "A Foo String";
- * <p/>
- * public String getFoo()
- * {
- * return foo;
- * }
- * <p/>
- * public void setFoo(String foo)
- * {
- * this.foo = foo;
- * }
- * }</pre>
- * <h4>Code in a JSP page...</h4>
- * <pre> <netui-data:declarePageInput name="fooBean" type="pageInput.PageInputController.FooBean"/>
- * ...
- * fooBean.foo: <netui:span value="${pageInput.fooBean.foo}" />
+ * forward.addActionOutput("profile", yourProfile);
* </pre>
+ * In order to declare this as a page input in a JSP, the page would contain a tag as:
+ * <pre>
+ * <netui-data:declarePageInput name="profile" type="org.someprofile.ProfileBean"/>
+ * </pre>
+ * and the <code>profile</code> object could be referenced in the JSP as:
+ * <pre>
+ * ${pageInput.profile}
+ * </pre>
+ * </p>
*
* @netui:tag name="declarePageInput" body-content="scriptless"
- * description="Use this tag to declare a page input variable that is available in the pageInput databinding context."
+ * description="Use this tag to declare a page input variable that is available in the pageInput databinding context."
*/
public class DeclarePageInput
- extends AbstractSimpleTag {
+ extends AbstractSimpleTag {
- private static final Logger logger = Logger.getInstance(DeclarePageInput.class);
+ private static final Logger LOGGER = Logger.getInstance(DeclarePageInput.class);
private static final String EMPTY_STRING = "";
private String _type = null;
@@ -149,7 +122,6 @@
*
* @param name the name of the variable
* @jsptagref.attributedescription The name of the variable to reference.
- * @jsptagref.databindable false
* @jsptagref.attributesyntaxvalue <i>string_name</i>
* @netui:attribute required="true"
*/
@@ -158,11 +130,14 @@
}
/**
- * Set the required attribute. If a Page Input is required, the tag will report an
- * error if the page input key does not appear in the set of page inputs
- * for a page.
+ * Set a flag that declares whether this page intput is required or optiona. If a Page Input is required,
+ * the tag will report an error if the page input key does not appear in the set of page inputs for a page.
*
* @param required whether to require the page input for the page
+ * @jsptagref.attributedescription
+ * Set a flag that declares whether this page intput is required or optiona. If a Page Input is required,
+ * the tag will report an error if the page input key does not appear in the set of page inputs for a page.
+ * @jsptagref.attributesyntaxvalue <i>string_name</i>
* @netui:attribute required="false"
*/
public void setRequired(boolean required) {
@@ -170,12 +145,11 @@
}
/**
- * Set the type of the variable that referenced with the
- * {@link #setName} attribute on this tag.
+ * Set the String classname variable that represents the expected type of the page input.
*
* @param type the type of the variable that is referenced
- * @jsptagref.attributedescription The expected data type of the variable.
- * @jsptagref.databindable false
+ * @jsptagref.attributedescription
+ * Set the String classname variable that represents the expected type of the page input.
* @jsptagref.attributesyntaxvalue <i>string_type</i>
* @netui:attribute required="true"
*/
@@ -187,9 +161,9 @@
*
*/
public void doTag()
- throws JspException {
- if(logger.isDebugEnabled())
- logger.debug("Added a page input named \"" + _name + "\" of type \"" + _type + "\"");
+ throws JspException {
+
+ LOGGER.debug("Added a page input named \"" + _name + "\" of type \"" + _type + "\"");
if(_name.equals(EMPTY_STRING)) {
String msg = Bundle.getErrorString("Tags_DeclarePageInput_EmptyName");
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java Thu May 19 12:28:44 2005
@@ -221,8 +221,8 @@
* items encountered while iterating over a data set.
*
* @param ignoreNulls whether or not to ignore nulls
- * @jsptagref.attributedescription Boolean. If set to true, any null iteration items in the data set will be ignored.
- * @jsptagref.databindable false
+ * @jsptagref.attributedescription
+ * Boolean. If set to true, any null iteration items in the data set will be ignored.
* @jsptagref.attributesyntaxvalue <i>boolean_ignoreNulls</i>
* @netui:attribute required="false"
*/
@@ -247,8 +247,8 @@
* references a null object and the defaultText attribute is non-null.
*
* @param defaultText the default text
- * @jsptagref.attributedescription The text to render if the <code>dataSource</code> attribute references a null data set.
- * @jsptagref.databindable false
+ * @jsptagref.attributedescription
+ * The text to render if the <code>dataSource</code> attribute references a null data set.
* @jsptagref.attributesyntaxvalue <i>string_defaultText</i>
* @netui:attribute required="false" rtexprvalue="true"
*/
@@ -342,6 +342,9 @@
}
/**
+ * Method used by tags in the repeater tag set to register the presence of a contained
+ * tag. When registered, the repeater will change the way in which it renders to
+ * either use structured or non-structured rendering.
* @param repeaterComponent {@link RepeaterComponent} to register with the Repeater parent
*/
public void registerChildTag(RepeaterComponent repeaterComponent) {
@@ -349,7 +352,8 @@
}
/**
- * @return SKIP_BODY if an error occurs; EVAL_BODY_BUFFERED otherwise
+ * Start rendering the repeater.
+ * @return {@link #SKIP_BODY} if an error occurs; {@link #EVAL_BODY_BUFFERED} otherwise
* @throws JspException if an error occurs that can not be reported in the page
*/
public int doStartTag()
@@ -416,7 +420,11 @@
}
/**
- * @return SKIP_BODY if an error occurs or the data set has been rendered; EVAL_BODY_AGAIN otherwise
+ * <p>
+ * Continue rendering the repeater changing the render state or advancing to a new data item
+ * as needed.
+ * </p>
+ * @return {@link SKIP_BODY} if an error occurs or the data set has been rendered; {@link EVAL_BODY_AGAIN} otherwise
*/
public int doAfterBody() {
@@ -462,7 +470,8 @@
}
/**
- * @return EVAL_PAGE
+ * Complete rendering the repeater.
+ * @return {@link EVAL_PAGE}
* @throws JspException if an error occurs that can not be reported in the page
*/
public int doEndTag()
@@ -714,7 +723,6 @@
* tag draws its data from myIterativeData.
*
* <p> <code><netui-data:repeater dataSource="pageFlow.myIterativeData"></code>
- * @jsptagref.databindable Read / Write
* @jsptagref.attributesyntaxvalue <i>expression_datasource</i>
* @netui:attribute required="true"
*/
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterComponent.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterComponent.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterComponent.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterComponent.java Thu May 19 12:28:44 2005
@@ -28,41 +28,39 @@
import org.apache.beehive.netui.util.logging.Logger;
/**
- * The base class for tags that are part of the {@link Repeater} tag set
- * and participate in the structured nature of {@link Repeater} rendering.
- * This class provides typed access to the {@link Repeater} tag and
- * enforces the basic JSP tag parenting requirements of tags that can
- * only be nested within the {@link Repeater} tag.
+ * <p>
+ * The base class for tags that are part of the {@link Repeater} tag set and participate in the structured nature
+ * of {@link Repeater} rendering. This class provides typed access to the {@link Repeater} tag and
+ * enforces the basic JSP tag parenting requirements of tags that can only be nested within the
+ * {@link Repeater} tag.
+ * </p>
*/
public abstract class RepeaterComponent
- extends AbstractClassicTag {
+ extends AbstractClassicTag {
private static final Logger LOGGER = Logger.getInstance(RepeaterComponent.class);
private Repeater _repeater = null;
/**
+ * <p>
* Starts a tag's lifecycle. This method performs several operations before
* invoking the @see renderStartTag(int) method. In order, these stages are:
* <ol>
- * <li>@see verifyStructure()</li>
- * <li>@see prepare()</li>
* <li>@see verifyAttributes()</li>
* <li>@see renderStartTag(int)</li>
* </ol>
- * The benefit of this lifecycle is that it provides a structure for component
- * tags that are immediately nested inside of repeating tags.
- * <br/>
* <br/>
* Any errors that occur before calling @see renderStartTag(int) are reported
* in the page.
- *
+ * </p>
* @return the value returned from calling @see renderStartTag(int), which can be
* any value that can be returned from the @see javax.servlet.jsp.tagext.TagSupport
* class. If an error occurs, the tag returns SKIP_BODY.
*/
public int doStartTag()
- throws JspException {
+ throws JspException {
+
int ret = SKIP_BODY;
try {
Tag parent = getParent();
Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterFooter.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterFooter.java?rev=170981&r1=170980&r2=170981&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterFooter.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/RepeaterFooter.java Thu May 19 12:28:44 2005
@@ -18,33 +18,78 @@
package org.apache.beehive.netui.tags.databinding.repeater;
/**
- * This tag is used to render the footer of a {@link Repeater}. This
- * header may contain any markup or tags that can be rendered to a page. In
- * the case of closing a table, ordered list, or unordered list, the elements
- * <table>, <ol>, and <ul> could respectively be rendered inside
- * the body of this tag. Ther is no data item present at the time that the
- * RepeaterFooter renders, so tags in the body can not reference the
- * <code>container</code> databinding context to access a current item
- * or index, though other databinding contexts are available.
- * <p>The RepeaterFooter renders exactly once in a table during the {@link Repeater}
- * tag's {@link Repeater#FOOTER} rendering state.</p>
+ * <p>
+ * Renders the footer of a {@link Repeater} tag. This header may contain any HTML markup that can
+ * be rendered to a page. In the case of closing a table, ordered list, or unordered list, the elements
+ * </table>, </ol>, and </ul> could respectively be rendered inside the body of
+ * the <netui-data:repeaterFooter> tag.
+ * </p>
+ * <p>
+ * There is no data item present at the time that the <netui-data:repeaterFooter> renders
+ * (because the iteration of the <netui-data:repeater> tag has ended), so tags in the body can not
+ * reference the <code>${container...}</code> JSP EL implicit object to access the current item in
+ * the data set, though other databinding contexts are available.
+ * </p>
+ * <p>
+ * The header tag is rendered exactly once at the end of repeater rendering.
+ * </p>
+ * <p>
+ * For example, the following sample renders the data set as an HTML table. The table has two columns,
+ * "index" and "name", and each iteration over the data set is rendered a row of the table. The
+ * <netui-data:repeaterFooter> tag renders once, after the iteration is complete. It renders a
+ * closing HTML table tag.
+ * <br/>
+ * <pre>
+ * <netui-data:repeater dataSource="pageFlow.myDataSet">
+ * <netui-data:repeaterHeader>
+ * <table border="1">
+ * <tr>
+ * <td><b>index</b></td>
+ * <td><b>name</b></td>
+ * </tr>
+ * </netui-data:repeaterHeader>
+ * <netui-data:repeaterItem>
+ * <tr>
+ * <td>
+ * <netui:span value="${container.index}" />
+ * </td>
+ * <td>
+ * <netui:span value="${container.item}" />
+ * </td>
+ * </tr>
+ * </netui-data:repeaterItem>
+ * <b><netui-data:repeaterFooter></b>
+ * </table>
+ * <b></netui-data:repeaterFooter></b>
+ * </netui-data:repeater>
+ * </pre>
+ * </p>
*
- * @jsptagref.tagdescription Renders the footer of a {@link Repeater} tag. This
- * header may contain any HTML markup that can be rendered to a page. In
- * the case of closing a table, ordered list, or unordered list, the elements
- * </table>, </ol>, and </ul> could respectively be rendered inside
- * the body of the <netui-data:repeaterFooter> tag.
- * <p/>
- * <p>There is no data item present at the time that the
- * <netui-data:repeaterFooter> renders (because the iteration of
- * the <netui-data:repeater> tag has ended), so tags in the body can not reference the
- * <code>{container...}</code> data binding context to access the current item in
+ * @jsptagref.tagdescription
+ * <p>
+ * Renders the footer of a {@link Repeater} tag. This header may contain any HTML markup that can
+ * be rendered to a page. In the case of closing a table, ordered list, or unordered list, the elements
+ * </table>, </ol>, and </ul> could respectively be rendered inside the body of
+ * the <netui-data:repeaterFooter> tag.
+ * </p>
+ * <p>
+ * There is no data item present at the time that the <netui-data:repeaterFooter> renders
+ * (because the iteration of the <netui-data:repeater> tag has ended), so tags in the body can not
+ * reference the <code>${container...}</code> JSP EL implicit object to access the current item in
* the data set, though other databinding contexts are available.
- * @example The following sample renders the data set as an HTML table. The table has two columns, "index" and "name",
- * and each iteration over the data set is rendered a row of the table. The <netui-data:repeaterFooter>
- * tag renders once, after the iteration is complete. It renders a closing HTML table tag.
- * <p/>
- * <pre> <netui-data:repeater dataSource="pageFlow.myDataSet">
+ * </p>
+ * <p>
+ * The header tag is rendered exactly once at the end of repeater rendering.
+ * </p>
+ * @example
+ * <p>
+ * For example, the following sample renders the data set as an HTML table. The table has two columns,
+ * "index" and "name", and each iteration over the data set is rendered a row of the table. The
+ * <netui-data:repeaterFooter> tag renders once, after the iteration is complete. It renders a
+ * closing HTML table tag.
+ * <br/>
+ * <pre>
+ * <netui-data:repeater dataSource="pageFlow.myDataSet">
* <netui-data:repeaterHeader>
* <table border="1">
* <tr>
@@ -65,8 +110,11 @@
* <b><netui-data:repeaterFooter></b>
* </table>
* <b></netui-data:repeaterFooter></b>
- * </netui-data:repeater></pre>
- * @netui:tag name="repeaterFooter" description="Use this tag to render the footer of a Repeater."
+ * </netui-data:repeater>
+ * </pre>
+ * </p>
+ *
+ * @netui:tag name="repeaterFooter" description="Render the footer of a repeater tag."
*/
public class RepeaterFooter
extends RepeaterComponent {