kinman 2002/12/18 10:35:38 Modified: jsr152/src/share/javax/servlet/jsp JspContext.java PageContext.java jsr152/src/share/javax/servlet/jsp/el Expression.java ExpressionEvaluator.java VariableResolver.java jsr152/src/share/javax/servlet/jsp/tagext .nbattrs BodyTag.java IterationTag.java JspFragment.java SimpleTag.java Tag.java TagData.java TagLibraryValidator.java TagVariableInfo.java VariableInfo.java Log: - Patch by Mark Roth Attached are a set of API patches leading up to PFD2 of the specification. Look for a corresponding patch to jakarta-tomcat-jasper to bring it up to date with these APIs. Also note the attached replacement for TagProtocol.gif. jsr152/src/share/javax/servlet/jsp/tagext/doc-files/TagProtocol.gif - Updated diagram to remove arrow from released state to all properties initialized state. - Moved label [3] to another arrow. jsr152/src/share/javax/servlet/jsp/tagext/Tag.java - Removed state transition [3] from class javadocs. - Added a new [3] label clarifying details about what may be called on tag reuse. jsr152/src/share/javax/servlet/jsp/tagext/TagData.java - Updated description for getAttribute() to clarify REQUEST_TIME_VALUE is returned for any dynamic attribute set via <jsp:attribute>. jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java - "for example" --> "in other words" jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java - Fixed incorrect class comment about variable scope. - Removed old comment about JLS verbiage. - Improved description of why 'boxed' types are necessary. jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java - Fixed erroneous comment about only being available in JSP 2.0 format jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java - Clarified SimpleTag has the equivalent power of BodyTag but with a much simpler lifecycle. jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java - Clarified description for return value of SKIP_BODY from doAfterBody() jsr152/src/share/javax/servlet/jsp/PageContext.java - Fixed class description as some elements were moved to JspContext. jsr152/src/share/javax/servlet/jsp/JspContext.java - Fixed class description as some elements were moved from PageContext. - Removed constants PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE and APPLICATION_SCOPE as these are duplicated in PageContext. jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java - Clarified that in a classic tag invocation with an empty body (e.g. <my:tag/>), the body methods are not to be called by the container. jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java - A validator operates on the XML view associated with the JSP page, not the "XML document". jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java - Removed pContext parameter from resolveVariable() jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java - Changed from an interface to an abstract class. jsr152/src/share/javax/servlet/jsp/el/Expression.java - Changed from an interface to an abstract class. Revision Changes Path 1.6 +17 -32 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java Index: JspContext.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- JspContext.java 8 Nov 2002 21:30:21 -0000 1.5 +++ JspContext.java 18 Dec 2002 18:35:37 -0000 1.6 @@ -84,45 +84,30 @@ * * <p><B>Methods Intended for JSP authors</B> * <p> + * Some methods provide <B>uniform access</B> to the diverse objects + * representing scopes. + * The implementation must use the underlying machinery + * corresponding to that scope, so information can be passed back and + * forth between the underlying environment (e.g. Servlets) and JSP pages. + * The methods are: + * <code>setAttribute()</code>, <code>getAttribute()</code>, + * <code>findAttribute()</code>, <code>removeAttribute()</code>, + * <code>getAttributesScope()</code> and + * <code>getAttributeNamesInScope()</code>. + * + * <p> * The following methods provide <B>convenient access</B> to implicit objects: - * <ul> * <code>getOut()</code> * + * <p> + * The following methods provide <B>programmatic access</b> to the + * Expression Language evaluator: + * <code>getExpressionEvaluator()</code>, <code>getVariableResolver()</code> + * * @since 2.0 */ public abstract class JspContext { - - /** - * Page scope: (this is the default) the named reference remains available - * in this JspContext until the return from the current Servlet.service() - * invocation. - */ - - public static final int PAGE_SCOPE = 1; - - /** - * Request scope: the named reference remains available from the - * ServletRequest associated with the Servlet until the current - * request is completed. - */ - - public static final int REQUEST_SCOPE = 2; - - /** - * Session scope (only valid if this page participates in a session): - * the named reference remains available from the HttpSession (if any) - * associated with the Servlet until the HttpSession is invalidated. - */ - - public static final int SESSION_SCOPE = 3; - - /** - * Application scope: named reference remains available in the - * ServletContext until it is reclaimed. - */ - - public static final int APPLICATION_SCOPE = 4; /** * Register the name and value specified with page scope semantics. 1.6 +24 -22 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java Index: PageContext.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- PageContext.java 29 Oct 2002 01:18:11 -0000 1.5 +++ PageContext.java 18 Dec 2002 18:35:37 -0000 1.6 @@ -76,7 +76,7 @@ * A PageContext instance provides access to all the namespaces associated * with a JSP page, provides access to several page attributes, as well as * a layer above the implementation details. Implicit objects are added - * the pageContext automatically. + * to the pageContext automatically. * * <p> The <code> PageContext </code> class is an abstract class, designed to be * extended to provide implementation dependent implementations thereof, by @@ -116,20 +116,8 @@ * * <p><B>Methods Intended for JSP authors</B> * <p> - * Some methods provide <B>uniform access</B> to the diverse objects - * representing scopes. - * The implementation must use the underlying Servlet machinery - * corresponding to that scope, so information can be passed back and - * forth between Servlets and JSP pages. The methods are: - * <code>setAttribute()</code>, <code>getAttribute()</code>, - * <code>findAttribute()</code>, <code>removeAttribute()</code>, - * <code>getAttributesScope()</code> and - * <code>getAttributeNamesInScope()</code>. - * - * <p> * The following methods provide <B>convenient access</B> to implicit objects: - * <ul> - * <code>getOut()</code>, <code>getException()</code>, <code>getPage()</code> + * <code>getException()</code>, <code>getPage()</code> * <code>getRequest()</code>, <code>getResponse()</code>, * <code>getSession()</code>, <code>getServletConfig()</code> * and <code>getServletContext()</code>. @@ -456,10 +444,17 @@ /** * <p> - * This method is intended to process an unhandled "page" level exception - * by redirecting the exception to either the specified error page for this - * JSP, or if none was specified, to perform some implementation dependent - * action. + * This method is intended to process an unhandled 'page' level + * exception by forwarding the exception to the specified + * error page for this JSP. If forwarding is not possible (for + * example because the response has already been committed), an + * implementation dependent mechanism should be used to invoke + * the error page (e.g. "including" the error page instead). + * + * <p> + * If no error page is defined in the page, the exception should + * be rethrown so that the standard servlet error handling + * takes over. * * <p> * A JSP implementation class shall typically clean up any local state @@ -486,10 +481,17 @@ /** * <p> - * This method is identical to the handlePageException(Exception), - * except that it accepts a Throwable. This is the preferred method - * to use as it allows proper implementation of the errorpage - * semantics. + * This method is intended to process an unhandled 'page' level + * exception by forwarding the exception to the specified + * error page for this JSP. If forwarding is not possible (for + * example because the response has already been committed), an + * implementation dependent mechanism should be used to invoke + * the error page (e.g. "including" the error page instead). + * + * <p> + * If no error page is defined in the page, the exception should + * be rethrown so that the standard servlet error handling + * takes over. * * <p> * This method is intended to process an unhandled "page" level exception 1.4 +16 -15 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/Expression.java Index: Expression.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/Expression.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Expression.java 29 Oct 2002 01:18:12 -0000 1.3 +++ Expression.java 18 Dec 2002 18:35:37 -0000 1.4 @@ -60,32 +60,33 @@ import java.util.Map; /** - * <p>The interface for a prepared expression.</p> + * <p>The abstract class for a prepared expression.</p> * - * <p>An instance of an Expression can be obtained via from an ExpressionEvaluator - * instance.</p> + * <p>An instance of an Expression can be obtained via from an + * ExpressionEvaluator instance.</p> * - * <p>An Expression may or not have done a syntactic parse of the expression. A client - * invoking the evaluate() mehod should be ready for the case where ELParseException - * exceptions are raised. </p> + * <p>An Expression may or not have done a syntactic parse of the expression. + * A client invoking the evaluate() method should be ready for the case + * where ELParseException exceptions are raised. </p> * * @since 2.0 */ -public interface Expression { +public abstract class Expression { /** - * Evaluates an expression that was previously prepared. In some implementations - * preparing an expression involves full syntactic validation, but others may - * not do so. Evaluating the expression may raise an ELParseException as well - * as other ELExceptions due to run-time evaluation. + * Evaluates an expression that was previously prepared. In some + * implementations preparing an expression involves full syntactic + * validation, but others may not do so. Evaluating the expression may + * raise an ELParseException as well as other ELExceptions due to + * run-time evaluation. * - * @param vResolver A VariableResolver instance that can be used at runtime to - * resolve the name of implicit objects into Objects. + * @param vResolver A VariableResolver instance that can be used at + * runtime to resolve the name of implicit objects into Objects. * @return The result of the expression evaluation. * * @exception ELException Thrown if the expression evaluation failed. */ - public Object evaluate( VariableResolver vResolver ) - throws ELException; + public abstract Object evaluate( VariableResolver vResolver ) + throws ELException; } 1.6 +5 -5 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java Index: ExpressionEvaluator.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ExpressionEvaluator.java 29 Oct 2002 01:18:12 -0000 1.5 +++ ExpressionEvaluator.java 18 Dec 2002 18:35:37 -0000 1.6 @@ -60,9 +60,9 @@ import java.util.Map; /** - * <p>The interface for an expression-language evaluator. + * <p>The abstract base class for an expression-language evaluator. * Classes that implement an expression language expose their functionality - * via this interface.</p> + * via this abstract class.</p> * * <p>An instance of the ExpressionEvaluator can be obtained via the * JspContext / PageContext</p> @@ -88,7 +88,7 @@ * * @since 2.0 */ -public interface ExpressionEvaluator { +public abstract class ExpressionEvaluator { /** * Prepare an expression for later evaluation. This method should perform @@ -109,7 +109,7 @@ * * @exception ELException Thrown if parsing errors were found. */ - public Expression parseExpression( String expression, + public abstract Expression parseExpression( String expression, Class expectedType, FunctionMapper fMapper, String defaultPrefix ) @@ -138,7 +138,7 @@ * * @exception ELException Thrown if the expression evaluation failed. */ - public Object evaluate( String expression, + public abstract Object evaluate( String expression, Class expectedType, VariableResolver vResolver, FunctionMapper fMapper, 1.5 +1 -6 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java Index: VariableResolver.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- VariableResolver.java 29 Oct 2002 01:18:12 -0000 1.4 +++ VariableResolver.java 18 Dec 2002 18:35:37 -0000 1.5 @@ -76,17 +76,12 @@ * Returns null if the variable is not found. * * @param pName the name of the variable to resolve - * @param pContext the context in which the variable is being resolved. - * The actual instance varies depending on the environment in which - * the Expression Evaluator is used. For example, in a JSP context, - * the context would normally be an instance of JspContext. * @return the result of the variable resolution * * @throws ELException if a failure occurred while trying to resolve * the given variable **/ - public Object resolveVariable (String pName, - Object pContext) + public Object resolveVariable (String pName) throws ELException; //------------------------------------- 1.3 +3 -0 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs Index: .nbattrs =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- .nbattrs 3 Oct 2002 23:01:44 -0000 1.2 +++ .nbattrs 18 Dec 2002 18:35:37 -0000 1.3 @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE attributes PUBLIC "-//NetBeans//DTD DefaultAttributes 1.0//EN" "http://www.netbeans.org/dtds/attributes-1_0.dtd"> <attributes version="1.0"> + <fileobject name="TagData.java"> + <attr name="class_dependency_java.lang.Cloneable" stringvalue="TagData"/> + </fileobject> <fileobject name="SimpleTag.java"> <attr name="class_dependency_javax.servlet.jsp.tagext.BodyTag" serialvalue="aced0005737200316f72672e6f70656e6964652e66696c6573797374656d732e4d756c746946696c654f626a65637424566f696456616c7565d9ec9c94d5fd3ca40c0000787077040000000078"/> </fileobject> 1.4 +16 -7 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java Index: BodyTag.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- BodyTag.java 4 Nov 2002 17:44:24 -0000 1.3 +++ BodyTag.java 18 Dec 2002 18:35:37 -0000 1.4 @@ -96,7 +96,7 @@ * object, where the JSP Page implementation object will place the * evaluation (and reevaluation, if appropriate) of the body. The setter * method (setBodyContent) will only be invoked if doStartTag() returns - * EVAL_BODY_BUFFERED. + * EVAL_BODY_BUFFERED and the corresponding action element is not empty. * * <p><B>Methods</B> * <p> In addition to the setter method for the bodyContent property, there @@ -113,29 +113,38 @@ * interface for details. * <p> * <IMG src="doc-files/BodyTagProtocol.gif"/> - + * * <p><B>Empty and Non-Empty Action</B> * <p> If the TagLibraryDescriptor file indicates that the action must - * always have an empty action, by an <body-content> entry of "empty", - * then the doStartTag() method must return SKIP_BODY. - * + * always have an empty element body, by an <body-content> entry + * of "empty", then the doStartTag() method must return SKIP_BODY. * Otherwise, the doStartTag() method may return SKIP_BODY, * EVAL_BODY_INCLUDE, or EVAL_BODY_BUFFERED. * + * <p>Note that which methods are invoked after the doStartTag() depends on + * both the return value and on if the custom action element is empty + * or not in the JSP page, not how it's declared in the TLD. + * * <p> * If SKIP_BODY is returned the body is not evaluated, and doEndTag() is * invoked. * * <p> - * If EVAL_BODY_INCLUDE is returned, setBodyContent() is not invoked, + * If EVAL_BODY_INCLUDE is returned, and the custom action element is not + * empty, setBodyContent() is not invoked, * doInitBody() is not invoked, the body is evaluated and * "passed through" to the current out, doAfterBody() is invoked * and then, after zero or more iterations, doEndTag() is invoked. + * If the custom action element is empty, only doStart() and + * doEndTag() are invoked. * * <p> - * If EVAL_BODY_BUFFERED is returned, setBodyContent() is invoked, + * If EVAL_BODY_BUFFERED is returned, and the custom action element is not + * empty, setBodyContent() is invoked, * doInitBody() is invoked, the body is evaluated, doAfterBody() is * invoked, and then, after zero or more iterations, doEndTag() is invoked. + * If the custom action element is empty, only doStart() and doEndTag() + * are invoked. */ public interface BodyTag extends IterationTag { 1.4 +7 -3 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java Index: IterationTag.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- IterationTag.java 4 Nov 2002 17:44:24 -0000 1.3 +++ IterationTag.java 18 Dec 2002 18:35:37 -0000 1.4 @@ -128,9 +128,13 @@ * <p> * If doAfterBody returns EVAL_BODY_AGAIN, a new evaluation of the * body will happen (followed by another invocation of doAfterBody). - * If doAfterBody returns SKIP_BODY no more body evaluations will - * occur, the value of out will be restored using the popBody method - * in pageContext, and then doEndTag will be invoked. + * If doAfterBody returns SKIP_BODY, no more body evaluations will occur, + * and the doEndTag method will be invoked. + * + * <p> + * If this tag handler implements BodyTag and doAfterBody returns + * SKIP_BODY, the value of out will be restored using the popBody + * method in pageContext prior to invoking doEndTag. * * <p> * The method re-invocations may be lead to different actions because 1.5 +1 -1 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java Index: JspFragment.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JspFragment.java 29 Oct 2002 01:18:12 -0000 1.4 +++ JspFragment.java 18 Dec 2002 18:35:37 -0000 1.5 @@ -64,7 +64,7 @@ * or to be of type JspFragment in the TLD. * <p> * The definition of the JSP fragment must only contain template - * text and JSP action elements. It must not contain, for example, + * text and JSP action elements. In other words, it must not contain * scriptlets or scriptlet expressions. At translation time, the * container generates an implementation of the JspFragment interface * capable of executing the defined fragment. 1.5 +1 -1 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java Index: SimpleTag.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- SimpleTag.java 4 Nov 2002 17:44:24 -0000 1.4 +++ SimpleTag.java 18 Dec 2002 18:35:37 -0000 1.5 @@ -65,7 +65,7 @@ * <code>doTag()</code> method, which is called once and only once for any * given tag invocation. All tag logic, iteration, body evaluations, etc. * are to be performed in this single method. Thus, simple tag handlers - * have the equivalent power of <code>IterationTag</code>, but with a much + * have the equivalent power of <code>BodyTag</code>, but with a much * simpler lifecycle and interface.</p> * * <p>To support body content, the <code>setJspBody()</code> 1.5 +6 -5 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/Tag.java Index: Tag.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/Tag.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Tag.java 4 Nov 2002 17:44:24 -0000 1.4 +++ Tag.java 18 Dec 2002 18:35:37 -0000 1.5 @@ -92,11 +92,12 @@ * or not. * <li> [2] This transition happens if and only if the tag ends normally * without raising an exception - * <li> [3] Note that since there are no guarantees on the state of the - * properties, a tag handler that had some optional properties set can only be - * reused if those properties are set to a new (known) value. This means - * that tag handlers can only be reused within the same "AttSet" (set of - * attributes that have been set). + * <li> [3] Some setters may be called again before a tag handler is + * reused. For instance, <code>setParent()</code> is called if it's + * reused within the same page but at a different level, + * <code>setPageContext()</code> is called if it's used in another page, + * and attribute setters are called if the values differ or are expressed + * as request-time attribute values. * <li> Check the TryCatchFinally interface for additional details related * to exception handling and resource management. * </ul></p> 1.5 +10 -3 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagData.java Index: TagData.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagData.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TagData.java 4 Nov 2002 17:44:24 -0000 1.4 +++ TagData.java 18 Dec 2002 18:35:37 -0000 1.5 @@ -131,11 +131,18 @@ /** * The value of the attribute. - * Returns the distinguished object REQUEST_TIME_VALUE if - * the value is request time. Returns null if the attribute is not set. + * If a static value is specified for an attribute that accepts a + * request-time attribute expression then that static value is returned, + * even if the value is provided in the body of a <jsp:attribute> action. + * The distinguished object REQUEST_TIME_VALUE is only returned if + * the value is specified as a request-time attribute expression + * or via the <jsp:attribute> action with a body that contains + * dynamic content (scriptlets, scripting expressions, EL expressions, + * standard actions, or custom actions). Returns null if the attribute + * is not set. * * @param attName the name of the attribute - * @return the attribute's value object + * @return the attribute's value */ public Object getAttribute(String attName) { 1.4 +1 -1 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java Index: TagLibraryValidator.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TagLibraryValidator.java 29 Oct 2002 01:18:12 -0000 1.3 +++ TagLibraryValidator.java 18 Dec 2002 18:35:37 -0000 1.4 @@ -59,7 +59,7 @@ /** * Translation-time validator class for a JSP page. - * A validator operates on the XML document associated with the JSP page. + * A validator operates on the XML view associated with the JSP page. * * <p> * The TLD file associates a TagLibraryValidator class and some init 1.6 +2 -2 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java Index: TagVariableInfo.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- TagVariableInfo.java 29 Oct 2002 01:18:12 -0000 1.5 +++ TagVariableInfo.java 18 Dec 2002 18:35:37 -0000 1.6 @@ -62,8 +62,8 @@ * * This object should be immutable. * - * This information is only available in JSP 2.0 format -*/ + * This information is only available in JSP 1.2 format TLDs or above. + */ public class TagVariableInfo { 1.6 +10 -10 jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java Index: VariableInfo.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- VariableInfo.java 4 Nov 2002 17:44:24 -0000 1.5 +++ VariableInfo.java 18 Dec 2002 18:35:37 -0000 1.6 @@ -61,15 +61,16 @@ * classes and it is used by the translation phase of JSP. * * <p> - * Scripting variables generated by a custom action may have scope values - * of page, request, session, and application. + * Scripting variables generated by a custom action have an associated + * scope of either AT_BEGIN, NESTED, or AT_END. * * <p> * The class name (VariableInfo.getClassName) in the returned objects - * are used to determine the types of the scripting variables. - * Because of this, a custom action cannot create a scripting variable - * of a primitive type. The workaround is to use "boxed" - * types. + * is used to determine the types of the scripting variables. + * Note that because scripting variables are assigned their values + * from scoped attributes which cannot be of primitive types, + * "boxed" types such as <code>java.lang.Integer</code> must + * be used instead of primitives. * * <p> * The class name may be a Fully Qualified Class Name, or a short @@ -85,10 +86,9 @@ * <p> * If a short class name is given in the VariableInfo objects, then * the class name must be that of a public class in the context of the - * import directives of the page where the custom action appears (will - * check if there is a JLS verbiage to refer to). The class must also - * be in the CLASSPATH for the Web Application (see Servlet 2.4 - * specification - essentially it is WEB-INF/lib and + * import directives of the page where the custom action appears. + * The class must also be in the CLASSPATH for the Web Application + * (see Servlet 2.4 specification - essentially it is WEB-INF/lib and * WEB-INF/classes). Failure to be so will lead to a translation-time * error. *
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>