Core JavaServer Faces
Bug
Report Page (First Edition)
- Page xv
- After "...two years to release the JSF 1.0 specification and
reference implementation.", add "(A maintenance release, called JSF 1.1,
followed shortly thereafter. It introduced no new features.)"
- Page xvi
- Change "We only assume only basic HTML skills ..." to "We assume
only basic HTML skills ..."
- Page xvi
- Change "Of course, being a 1.0 release, the current version" to "Of
course, the initial version"
- Page xvi
- Change "No programming is required for use of to use the tags." to
"No programming is required to use the tags."
- Page xvii
- Change "missing from JSF 1.0" to "missing from JSF 1.0/1.1"
- Page 11
- Note that Tomcat 5.5 requires slightly different instructions; check
the FAQ.
- Page 11
- Remove the box around Figure 1-6
- Page 11
- In item 4., change
jsf/lib/jsf-impl.jar:jsf/lib/jsf-impl.jar
to jsf/lib/jsf-impl.jar
- Page 13
- Remove one space before public String getName() { . . .
}
- Page 32
- Note that Tomcat 5.5 requires slightly different instructions; check
the FAQ.
- Page 44
- Change "in the faces-config.xml file" to "in the
QuizBean class". Change "how to configure beans" to "how to use
beans". [In an earlier version of the manuscript, the quiz really
was configured in faces-config.xml, as described on page 55,
but we decided to simplify the example.]
- Page 49 Listing 2-4
- Change the title to numberquiz/WEB-INF/faces-config.xml
- Page 50
- In faces-config.xml, change index.faces to index.jsp (2x)
- Page 56
- Change "exactly one of the elements value,
null-value, values or map-entries" to
"exactly one of the elements value, null-value,
map-entries or list-entries"
- Page 57
- Change QuizBackingBean to QuizBean
- Page 73
- Change "The more.jsp and failure.jsp pages are
omitted." to "The success.jsp and failure.jsp
pages are omitted."
- Page 81
- Change "Figure 3-6 shows..." to "Figure 3-8 shows..."
- Page 86
- Change "has 2.8 attributes" to "has an average of 2.8
attributes"
- Page 91
- Change "the JSF framework calls Form.getStateOutput()" to
"the JSF framework calls Form.getStatePrompt()"
- Page 109
- Change "The h:outputFormat tag uses a
java.text.MessageFormat instance to format it's output." to
"The h:outputFormat tag uses a java.text.MessageFormat
instance to format its output."
- Page 112
- In the second-to-last table entry, change disabled to
disabled (h:commandButton only)
- Page 116
- The line private String welcomeURL... should be indented as
far as the code line following it.
- Page 117
- Swap the lines <a name="toc">Table of
Contents</a> and <a
name="conclusion">Conclusion</a> (to match the order in
Table 4-19).
- Page 117
- Change "Generally, you use h:outputLink for text" to
"Generally, you use h:outputText for text"
- Page 118
- Remove the lines <f:param name="locale"
value="german"/> and <f:param name="locale"
value="english"/>
- Page 124
- Change PAGE_DIRECTION to pageDirection and
LINE_DIRECTION to lineDirection.
- Page 125, 126, 129, 130
- Change <f:selectItem itemValue="Red"/> to
<f:selectItem itemValue="Red" itemLabel="Red"/> and
change the other f:selectItem tags in the same fashion. (Unlike
the SelectItem constructor, the f:selectItem tag isn't
smart enough to set the label from the value.)
- Page 127
- Change PAGE_DIRECTION to pageDirection and
LINE_DIRECTION to lineDirection (5x each)
- Page 128
- Change <f:selectItem value="1900"/>
<f:selectItem value="1901"/> to <f:selectItem
itemValue="1900" itemLabel="1900"/> <f:selectItem
itemValue="1901" itemLabel="1901"/>
- Page 130
- Add matching itemLabel attributes after each
itemValue, i.e.
<f:selectItem itemValue="Cheese" itemLabel="Cheese"/>
<f:selectItem itemValue="Pickle" itemLabel="Pickle/> . . .
In the following paragraph, change "Those values are also used" to "The
itemLabel values are used". Remove ", so f:selectItem
also has an itemLabel attribute". [In the beta version, the
value was automatically used as the label when the label was omitted,
but this feature has since been removed.]
- Pages 130 and 131
- Change </h:selectOneRadio> to
</h:selectOneMenu> (2x)
- Page 132
- Change
<h:selectOneRadio>
<f:selectItems value="#{form.condiments}"/>
</h:selectOneRadio>
to <h:selectOneRadio value="#{form.condiments}">
<f:selectItems value="#{form.condimentItems}"/>
</h:selectOneRadio>
Then change condiments to
condimentItems (3x) and getCondiments to
getCondimentItems
- Page 133
- Change condiments to condimentItems (9x) and
getCondiments to getCondimentItems
- Page 133
- Change "weekdays would be neatly arranged" to "days of the week
would be neatly arranged"
- Page 149
- In table 4-23, add as the first row: for | The ID of the
component whose message is displayed--applicable only to
h:message
- Page 156
- Change "...it's error message..." to "...its error message...".
- Page 155 and 166
- In the entry for rowClasses, change "colums" to "rows"
- Page 175, 176
- In the Listing headings, change edit/ to
editing/ (3x)
- Page 177
- Change "The table shown in Figure 5-7 uses the styleClass,
headerClass, and rowClasses." to "The table shown in Figure 5-7 uses the
styleClass, headerClass, and columnClasses."
- Page 185
- Change "or an instance of java.sql.Result" to "or an
instance of java.sql.ResultSet"
- Page 185
- Change getWrappedObject to getWrappedData (2x) and
setWrappedObject to setWrappedData.
- Page 187
- Change getWrappedObject to getWrappedData (2x) and
setWrappedObject to setWrappedData (2x).
- Page 188 - 191
- In the Listing headings, change delete/ to
deletingRows/ (6x)
- Page 194
- Change "Notice that we create an our own..." to "Notice that we
create our own..."
- Page 211
- Change MM/dddd to MM/yyyy.
- Page 227
- Before "Now we can use the f:converter tag...", insert this
sentence: "In the following examples, we will assume that the
card property of the PaymentBean has type
CreditCard, as shown in Listing 6-13 on page 237."
- Page 237, 239
- Change
void validate(FacesContext context, UIComponent
component)
to
void validate(FacesContext context,
UIComponent component, Object value)
- Page 275
- Change "Starting with the Apply Request Values phases" to "Starting
with the Apply Request Values phase"
- Page 289
rushmore/WEB-INF/classes/com/corejsf/messages.properties
- Change Tooltip to PageTitle (4x)
- Page 289
- Add the following to messages.properties:
lincolnWindowTitle=Lincoln
jeffersonWindowTitle=Jefferson
rooseveltWindowTitle=Roosevelt
washingtonWindowTitle=Washington
- Page 291
- Change ChangeLocaleBean to RushmoreListener.
Inside the processAction method, remove all code between { and
} (but not the braces themselves). Insert the following comment inside
the braces:
// implementation is identical to the listen
// method in Rushmore.java (Listing 7-11)
- Page 300
- In the tip at the bottom of the page, change "web.xml" to
"faces-config.xml"
- Page 305, 563, 581, 600
- Change "JSF 1.0" to "JSF 1.0/1.1"
- Page 307
- Change "The JSF 1.0 reference implementation" to "The JSF reference
implementation"
- Page 333
- Change "That attribute's value is /header.jsp" to "That
attribute's value is /bookHeader.jsp"
- Page 340
- Change "the controller sets the book attribute to Alice in
Wonderland" to "the controller sets the book attribute to
Peter Pan"
- Page 355
- Change "That interface defines 36 methods" to "That class defines 36
abstract methods"
- Page 355
- Change "...an existing class that implements the interface" to
"...an existing class that extends the UIComponent class"
- Page 397
- Change document['_id1'] to
document.forms['_id1'] (5x)
- Page 399
spinner-js/WEB-INF/classes/com/corejsf/JSSpinnerRenderer.java
- Change line 66 to
+ "onclick=\"document.forms[''{0}''][''{1}''].spin(-1); \"/>"
and line 68 to + " onclick=\"document.forms[''{0}''][''{1}''].spin(1); \"/>"
(That is, add a space before onclick and remove the }
after spin.)
- Page 404
- In the corejsf:tabbedPane at the bottom of the page, change
TabKey to TabText (4x)
- Page 425-427
- The
tabbedpane/WEB-INF/classes/com/corejsf/TabbedPaneTag.java
listing is wrong. It should be
bears/WEB-INF/classes/com/corejsf/TabbedPaneTag.java,
and there are minor differences between the printed code and the code
distribution. The file in the code distribution is correct.
- Page 485
- Indent code line 29 to line up with line 28.
- Page 568
ch12/fileupload/WEB-INF/classes/com/corejsf/UploadRenderer.java line
46
- Change
if (binding.getType(context) == InputStream.class) {
to else if (binding.getType(context) == InputStream.class) {
- Page 583 - 586
- Change code lines 34/35 and 126/127 to
UIData data = (UIData) component.findComponent(dataTableId);
- Remove code lines 153 - 178 (they are no longer necessary) After
line 120, add
if (response == null || response.equals("")) return;
- Page 606
- Change lines 19 - 25 of the code listing to
<field property="paymentForm:date" depends="required,mask">
<arg0 key="expirationDate"/>
<var>
<var-name>mask</var-name>
<var-value>^(0[1-9]|1[0-2])\/20[0-9][0-9]$</var-value>
</var>
</field>
(The
Struts date validator can't match MM/yyyy.)
- Page 616
- Change "Place the file validation-rules.xml into the
WEB-INF/lib directory" to "Place the file
validator-rules.xml into the WEB-INF directory"
- Page 640
- To the index entry of "attribute tag", add page 262
- Page 646
- To the index entry of "facet tag", add page 167
- Page 652
- To the index entry of "param tag", add pages 109, 115, 296
- Page 655
- To the index entry of "subview tag", add page 356
- Page 657
- To the index entry of "verbatim tag", add pages 117, 164 To the
index entry of "view tag", add page 14
- ch7/rushmore/washington.jsp, ch7/rushmore/jefferson.jsp,
ch7/rushmore/lincoln.jsp, ch7/rushmore/roosevelt.jsp
- Change the outputText in the title element to
<h:outputText value="#{msgs.windowTitle}"/>
- ch12/binary/WEB-INF/faces-config.xml
- Change ImageRenderer to ChartRenderer
- ch12/commons-validator-lib/com/corejsf/validator/CommonsValidatorTag.java
- Change
validator.setMaxlength(com.corejsf.util.Tags.evalInteger(minlength));
to validator.setMaxlength(com.corejsf.util.Tags.evalInteger(maxlength));
Thanks to K.C. Baltz, Jaye Bass, Eugene Bendersky, Jorge Bittencourt,
Mark Boatman, Jeanne Boyarsky, Matt Blum, Doug Carson, Yaakov Chaikin,
Chul-Woo Choi, Marc Chung, Scott Czadzeck, Julien Davet, Scott Dawson,
Michael O. Duffy, Tom Forrester, Scott J. Geertgens, Joey Geiger, Kenneth
Gertsen, Rob Gordon, Derek Graeber, Marty Hall, Trent Hinkel, Winston
Huang, Adam Jackson, Ivar de Jong, Yi Jin, Steve Kalvi, John Kent, Scott
Leberknight, Emmanuel Lecharny, Johnny Lee Lenhart, Benton Leong, Yin Lo,
Jose D. Montero, Rory Mc Naughton, Paolo Melendres, Michael Mitiaguin,
David Moffat, Andreas Mueller, Timo Neumann, J Pfersich, Nate Pitzer,
Franck Quinard, Sascha Robert, Holger Schimanski, Michael Skarpelos, Bill
Siggelkow, Rob Smith, David Thompson, Rob Volden, Martin Walla, Dusty
Wilmes, Jesse Wilson, Kenneth Wong, Michael Zeidler, and (your name might
go here) for their help!