About JCP
Get Involved
Community Resources
Community News
FAQ
Contact Us
|
|
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:
- 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.
-
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
|
|