ID Category Description
C001 errata

The specification states that the Restore View Phase of the request processing lifecycle should derive the view identifier. It also states that the ViewHandler should derive the view identifier. Clarified that it is the ViewHandler's responsibility to derive the view identifier.

Updated Sections 2.2.1 and 7.5.2 of the specification accordingly.

Justification:

The implementation is the intended behavior (the ViewHander should derive the view identifier). The specification document is incorrect.

Issue 162

C002 errata

Section 5.4.1 of the specification talks (in detail) about the @PostConstruct and @PreDestroy annotations that can be used with Managed Beans.  This section "redundantly" specifies the requirements for the method that bears these annotations - this is already described in section 2.5 of the Common Annotation specification. The specification redundantly describes the details about annotation rules, already described in the annotations specification.

Removed the redundant verbage in Section 5.4.1.

Justification:

The specification document is in error.

Issue 166

C003 errata

Section 9.2.2 of the specification still mentions <f:verbatim> as a requirement. Specifically, the specification says: "For the current version of this specification, any template text (or non-JSF custom actions) present in a page that is included with the <jsp:include> or <c:import> action, or any other mechanism that uses RequestDispatcher.include(), must be enclosed in an <f:verbatim> custom action (see Section 9.4.19  <f:verbatim> ). This restriction may be lifted in future versions of this specification." <f:verbatim> is kept in the specification because other view technologies find it useful (Facelets, for example).

Removed that paragraph (restriction) from the specification.

Justification:

It was agreed upon by the EG that as of JSF 1.2 (which went into the platform), this requirement is no longer valid. The specification document was not updated to reflect this - the document is in error.

Issue 167

C004 errata

Page 5-34 in Table 5-10 of the specification mentions a non-existent ExternalContext method getRequestScope().

Changed "requestScope -> externalContext.getRequestScope()" to "requestScope -> externalContext.getRequestMap()".

Justification:

The specification document is in error.

Issue 196

C005 errata

Incorrect Reference to Version element: "Sections 9.4 and 9.5 of the specification state that the jsp-version element of the TLDs for the core and html taglibs must be 2.1. However, in the schema version of the TLDs there is no jsp-version element - it's communicated via the version attribute on the opening taglib element."

Removed the bullet item in Sections 9.4 / 9.5 stating that you need to specify a jsp-version element.

Justification:

The specification document is in error.

Issue 203

C006 errata

Section 3.1.1 of the specification says: "Subsequent characters may be letters (as defined by the Character.isLetter() method), digits as defined by the Character.isDigit() method, dashes ( - ), and underscores ( _ )."

Made this an assertion: "Subsequent characters must be...."

Justification:

This was an agreed upon assertion by the EG (even prior to JSF 1.2), but was overlooked in the specification document.

Issue 185

C007 errata

Section 2.5.2.1 of the specification talks about the locale attribute value, and mentions that the seperator characters may be '-' or '_'.

Made this an assertion: "The separators between the segments must be '-' or '_'."

Justification:

This was an agreed upon assertion by the EG (even prior to JSF 1.2), but was overlooked in the specification document.

Issue 192

C008 errata

Section 3.1.1 of the specification reduntantly specifies the requirement that a provided component identifier must be unique within the closest NamingContainer parent. Here is the redundancy:

Every component may be named by a component identifier, which (if utilized)
must be unique among the components that share a common naming container parent
in a component tree. Component identifiers must conform to the following rules:
   - They must start with a letter (as defined by the Character.isLetter() method) or underscore ( _ ).
   - Subsequent characters may be letters (as defined by the Character.isLetter() method),
      digits as defined by the Character.isDigit() method, dashes ( - ), and underscores ( _ ).
To minimize the size of responses generated by JavaServer Faces, it is recommended
that component identifiers be as short as possible. If a component has been given an
identifier, it must be unique in the namespace of the closest ancestor to
that component
that is a NamingContainer (if any).

Removed the redundancy so the "uniqueness" requirement is specified once in this section:

Every component may be named by a component identifier that must conform to the
following rules:
    - They must start with a letter (as defined by the Character.isLetter() method) or underscore ( _ ).
    - Subsequent characters must be letters (as defined by the Character.isLetter() method),
      digits as defined by the Character.isDigit() method, dashes ( - ), or underscores ( _ ).
To minimize the size of responses generated by JavaServer Faces, it is recommended
that component identifiers be as short as possible. If a component has been given an
identifier, it must be unique in the namespace of the closest ancestor to
that component
that is a NamingContainer (if any).

Justification:

Specification edit (only) to eliminate redundant verbage.

Issue 193

C009 errata

Javadoc changes for SelectItem: Removed the mention of a NullPointerException being thrown for constructors. Mention the default value of 'true' for the 'escape' constructor argument if it is not specified. Code snippet below is an example of each type of change.

M jsf-api/src/javax/faces/model/SelectItem.java

      * @param value Value to be delivered to the model if this
      *  item is selected by the user
      * @param label Label to be rendered for this item in the response
-     *
-     * @throws NullPointerException if value
-     *  or label null
      */
     public SelectItem(Object value, String label) {
--------------------------------------------------------------------------------------
      * label property will be set to the value (converted to a
      * String, if necessary), the description property will be
-     * set to null, and the disabled property will
-     * be set to false.

+ * set to null, the disabled property will be set to + * false, and the escape property will be set to + ( true.

Justification:

Here, we removed some javadoc that was not supposed to be there, and we added javadoc that was supposed to be there. The implementation was correct, but the javadocs were wrong.

Issue 198

C010 errata

There are two parts to this issue:

  1. EnumConverter.getAsObject and EnumConverter.getAsString methodjavadocs incorrectly described the implementation. The javadocs for the getAsObject() method mentioned using the getEnumConstants() method, while the implementation used the Enum.valueOf() method. Likewise, the javadocs for the getAsString() method mentioned using the getEnumConstants() method, while the implementation used the toString() method.
  2. The javadoc mentioned throwing a ConverterException if the targetClass argument is null. This functionality was missing from the implementation.
M jsf-api/src/javax/faces/convert/EnumConverter.java
1. Corrected javadocs to correctly describe implementation.
2. Added functionality to implementation to throw a ConverterException if   the targetClass argument is null.

Here are the changes (getAsObject method):

<      * Convert the argument value to one of the enum
<      * constants of the class provided in our constructor.  If a target
<      * class argument has been provided to the constructor for this
<      * instance, call its getEnumConstants() method.  For
<      * each element in the list of constants, call
<      * toString() and compare the string with the argument
<      * value.  If they are equal, return the current
<      * element as the Object value.  If none of the
<      * elements yield a match in this manner, or the length of the list
<      * returned from getEnumConstants() is zero,
<      * throw a {@link ConverterException} containing the {@link
<      * #ENUM_ID} message with proper parameters.  If no target class
<      * argument has been provided to the constructor of this instance,
<      * throw a ConverterException containing the {@link
<      * #ENUM_NO_CLASS_ID} message with proper parameters.

--- > * Convert the value argument to one of the enum > * constants of the class provided in our constructor. If no > * target class argument has been provided to the constructor of > * this instance, throw a ConverterException > * containing the {@link #ENUM_NO_CLASS_ID} message with proper > * parameters. If the value argument is null > * or it has a length of zero, return null. > * Otherwise, perform the equivalent of Enum.valueOf using > * target class and value and return the Object.> * If the conversion fails, throw a ConverterException > * containing the {@link #ENUM_ID} message with proper parameters. Here are the changes (getAsString method): < * argument into a String. If a target class argument has been < * provided to the constructor for this instance, call its < * getEnumConstants() method. For each element in the < * list of constants, test for equality between the current element < * and the argument value. If they are equal, call < * toString() on the current element and return it. If < * none of the elements yield a match in this manner, or the length < * of the list returned from getEnumConstants() is < * zero, simply call toString() on the argument < * value and return it. < * --- > * argument into a String. If no target class argument has been > * provided to the constructor of this instance, throw a > * ConverterException containing the > * {@link #ENUM_NO_CLASS_ID} message with proper parameters. If the > * value,/code> argument is null, return null. > * If the value is an instance of the provided target class, return its > * string value (value.toString()). Otherwise, throw a > * {@link ConverterException} containing the {@link #ENUM_ID} message with> * proper parameters. > *

Justification:

For the first part of this issue, the EG agreed that the implementation is correct, and that the javadocs should be updated to reflect the implementation. For the second part of this issue, the EG agreed that the implementation was missing the logic to throw a ConverterException if the targetClass argument is null.

Issue 172

C011 errata

TLD attribute type of h:dataTable "var" attribute should not be ValueExpression enabled.

The generated "html_basic" TLD was generating the "var" attribute as ValueExpression Enabled, when it should be a String. The specification for the Standard HTML components (the Standard HTML RenderKit Docs) specify that this attribute must be of type String.

M jsf-ri/src/com/sun/faces/generate/JspTLD21Generator.java

- added additional case to TLD generator.  If property isn't a method
  expression doesn't necessarily mean it will always be a value
  expression Regenerated the correct tld.

Justification:

A bug was identified in the TLD generator code that produced a type for the var attribute that did not match the specification.

Issue 203 [RI]

C012 errata

Javadocs and method signatures for the core tag setBinding method do not agree. For example, javadoc says: @throws IllegalArgumentException but the method signature throws JspException.

M jsf-api/src/javax/faces/webapp/UIComponentELTag.java
M jsf-ri/src/com/sun/faces/taglib/jsf_core/ActionListenerTag.java
M jsf-ri/src/com/sun/faces/taglib/jsf_core/PhaseListenerTag.java
M jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java

Made javadocs changes so they correctly coincide with the method
signatures.

Here are the changes:

--- jsf-api/src/javax/faces/webapp/UIComponentELTag.java        5 Dec 2005 16:43:04 -0000       1.4
+++ jsf-api/src/javax/faces/webapp/UIComponentELTag.java        24 Aug 2006 11:49:19 -0000
@@ -71,8 +71,7 @@
      *
      * @param binding The new value expression
      *
-     * @throws IllegalArgumentException if the specified binding is not a
-     * valid value binding expression.
+     * @throws JspException if an error occurs
      */
     public void setBinding(ValueExpression binding) throws JspException {

--- jsf-ri/src/com/sun/faces/taglib/jsf_core/ActionListenerTag.java     10 May 2006 23:26:09 -0000      1.28
+++ jsf-ri/src/com/sun/faces/taglib/jsf_core/ActionListenerTag.java     24 Aug 2006 11:49:20 -0000
@@ -110,8 +110,6 @@
      * 

Set the value binding expression for this listener.

* * @param binding The new value binding expression - * - * @throws JspException if a JSP error occurs */ public void setBinding(ValueExpression binding) { --- jsf-ri/src/com/sun/faces/taglib/jsf_core/PhaseListenerTag.java 29 Mar 2006 23:03:51 -0000 1.7 +++ jsf-ri/src/com/sun/faces/taglib/jsf_core/PhaseListenerTag.java 24 Aug 2006 11:49:20 -0000 @@ -88,8 +88,6 @@ *

Set the value binding expression for this listener.

* * @param binding The new value binding expression - * - * @throws JspException if a JSP error occurs */ public void setBinding(ValueExpression binding) { --- jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java 10 May 2006 23:26:09 -0000 1.22 +++ jsf-ri/src/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java 24 Aug 2006 11:49:20 -0000 @@ -111,8 +111,6 @@ *

Set the value binding expression for this listener.

* * @param binding The new value binding expression - * - * @throws JspException if a JSP error occurs */ public void setBinding(ValueExpression binding) {

Justification:

The method signatures were correct (as discussed by the EG), but the javadocs were wrong.

Issue 184

C013 errata

The DoubleConverter.CONVERTER_ID constant is defined incorrectly: public static final String CONVERTER_ID = "javax.faces.DoubleTime";

M jsf-api/src/javax/faces/convert/DoubleConverter.java

Corrected this to be:

public static final String CONVERTER_ID = "javax.faces.Double";

Justification:

The implementation was inconsistent with the spec, in a way that caused the implementation to not correctly implement the spec.

Issue 176

C014 errata

The generated TLD <description> element incorrectly specified the value attribute to be a UIComponent. As per JSF 1.0/1.1, the correct type is SelectItem. This bug was introduced in JSF 1.2.

M jsf-ri/conf/share/jsf_core.tld

Made "value" attibute be SelectItem (not UIComponent).  Regenerate
tlddocs.

Here are the changes:

--- conf/share/jsf_core.tld    31 May 2006 17:22:29 -0000    1.64
+++ conf/share/jsf_core.tld    29 Jun 2006 21:39:47 -0000
@@ -709,7 +709,7 @@
            
            value
            
-                javax.faces.component.UIComponent
+                javax.faces.model.SelectItem
            
        

@@ -756,7 +756,9 @@
                information for these options.
            
            value
-            
+            
+                java.lang.Object
+            

Justification:

The correct type is specified in JSF 1.0/JSF 1.1. This bug was introduced in JSF 1.2.

Issue 187

C015 errata

ConverterTag / ConverterELTag doStartTag() methods (javadoc changes): Specified that conversion must occur if the local value is a String. The implementation was in place for this, but we were missing the javadoc to describe this behavior.

M jsf-api/src/javax/faces/webapp/ConverterELTag.java
M jsf-api/src/javax/faces/webapp/ConverterTag.java

-- added additional javadoc

Here are the changes:

 /*
@@ -137,7 +137,8 @@
      * class, and register it with the {@link UIComponent} instance associated
      * with our most immediately surrounding {@link UIComponentTag} instance, if
      * the {@link UIComponent} instance was created by this execution of the
-     * containing JSP page.

+ * containing JSP page. If the localValue of the + * {@link UIComponent} is a String, attempt to convert it.

--- ConverterELTag.java 5 Dec 2005 16:43:04 -0000 1.3 +++ ConverterELTag.java 17 Aug 2006 20:32:48 -0000 1.4 @@ -1,5 +1,5 @@ /* @@ -79,7 +79,8 @@ * class, and register it with the {@link UIComponent} instance associated * with our most immediately surrounding {@link UIComponentClassicTagBase} instance, if * the {@link UIComponent} instance was created by this execution of the - * containing JSP page.

+ * containing JSP page. If the localValue of the + * {@link UIComponent} is a String, attempt to convert it.

Justification:

The EG agreed that we need to specify that an implementation must perform conversion if the local value is a String.

Issue 344

C016 errata

The generated TLD <description> element for <f:convertNumber> incorrectly specified an invalid type "percentage" when it should have been "percent". This bug was introduced in JSF 1.2.

Here are the changes: > --- jsf_core.tld 29 Jun 2006 21:58:07 -0000 1.65 > +++ jsf_core.tld 23 Aug 2006 12:13:51 -0000 > @@ -401,7 +401,7 @@ > > Specifies how the number string will be formatted > and parsed. Valid values are "number", "currency", > - and "percentage". Default value is "number". > + and "percent". Default value is "number". > > type >
M jsf-ri/conf/share/jsf_core.tld

Justification:

The verbage in the <description> element specifies an incorrect value. The implementation has the correct value.

Issue 387