Index: jsf-ri/conf/share/facelets_jsf_core.taglib.xml =================================================================== --- jsf-ri/conf/share/facelets_jsf_core.taglib.xml (revision 8717) +++ jsf-ri/conf/share/facelets_jsf_core.taglib.xml (working copy) @@ -45,97 +45,97 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0"> - + + ]]> http://java.sun.com/jsf/core - + Register an ActionListener instance on the UIComponent associated with the closest parent UIComponent - custom action.</p> - + custom action.

+ ]]>
actionListener com.sun.faces.facelets.tag.jsf.core.ActionListenerHandler - + + ]]> type false java.lang.String - + + ]]> binding false javax.faces.event.ActionListener - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> attribute com.sun.faces.facelets.tag.jsf.core.AttributeHandler - + + ]]> name java.lang.String - + + ]]> value java.lang.Object - + + ]]> convertDateTime javax.faces.DateTime com.sun.faces.facelets.tag.jsf.core.ConvertDateTimeHandler - + + ]]> dateStyle java.lang.String - + + ]]> locale false java.lang.Object - + + ]]> pattern java.lang.String - + + ]]> timeStyle java.lang.String - + + ]]> timeZone java.lang.Object - + + ]]> type java.lang.String - + + ]]> binding javax.faces.convert.DateTimeConverter - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> convertNumber javax.faces.Number com.sun.faces.facelets.tag.jsf.core.ConvertNumberHandler - + + ]]> currencyCode java.lang.String - + + ]]> currencySymbol java.lang.String - + + ]]> groupingUsed java.lang.Boolean - + + ]]> integerOnly java.lang.Boolean - <p> + - <span class="changed_modified_2_0">Locale</span> + Locale whose predefined styles for numbers are used during formatting and parsing. If not specified, the Locale returned by FacesContext.getViewRoot().getLocale() will be used. - Expressions must evaluate to a java.util.Locale <span - class="changed_modified_2_0">or a String that is valid to + Expressions must evaluate to a java.util.Locale or a String that is valid to pass as the first argument to the constructor java.util.Locale(String language, String country). The - empty string is passed as the second argument.</span> + empty string is passed as the second argument. - </p> +

]]>
locale java.lang.Object
- + + ]]> maxFractionDigits java.lang.Integer - + + ]]> maxIntegerDigits java.lang.Integer - + + ]]> minFractionDigits java.lang.Integer - + + ]]> minIntegerDigits java.lang.Integer - + + ]]> pattern java.lang.String - + + ]]> type java.lang.String - + + ]]> binding javax.faces.convert.NumberConverter - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> converter com.sun.faces.facelets.tag.jsf.core.ConvertDelegateHandler - + + ]]> converterId java.lang.String - + + ]]> binding javax.faces.convert.Converter - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + Register an AjaxBehavior instance on one or more UIComponents implementing the ClientBehaviorHolder interface. This tag may be nested witin a single component (enabling Ajax for a single component), or it may be "wrapped" around multiple components (enabling Ajax for - many components).</p> + many components).

- <p class="changed_added_2_0">The String value for ids +

The String value for ids specified for execute and render may be specified as a search expression as outlined in the JavaDocs for - <code>UIComponent.findComponent()</code>. The implementation + UIComponent.findComponent(). The implementation must resolve these ids as specified for - <code>UIComponent.findComponent()</code>. - </p> + UIComponent.findComponent(). +

-
+ ]]>
ajax com.sun.faces.facelets.tag.jsf.core.AjaxHandler - - <p class="changed_added_2_0">A value of "true" indicates + A value of "true" indicates the AjaxBehavior should not be rendered. A value of "false" indicates - the AjaxBehavior should be rendered. "false" is the default.</p> + the AjaxBehavior should be rendered. "false" is the default.

-
+ ]]>
disabled false java.lang.Boolean
- - <p class="changed_added_2_0">A String identifying the type + A String identifying the type of event the Ajax action will apply to. If specified, it must be one of the @@ -438,17 +438,18 @@ event is determined for the component. The DOM event name is the actual DOM event name (for example: "click") as opposed to (for example: - "onclick").</p> + "onclick").

-
+ ]]>
event false java.lang.String
- - <p class="changed_added_2_0">Evaluates to - Collection<String>. This is a space separated + Evaluates to + Collection. This is a space separated list of client ids of components that will participate in the "execute" portion of the Request Processing Lifecycle. If a literal is specified the identifiers @@ -458,34 +459,36 @@ "@this" is assumed. For example, @this clientIdOne - clientIdTwo.</p> - - + clientIdTwo.

+]]> + ]]>
execute false java.util.Collection
- - <p class="changed_added_2_0">If "true" behavior events + If "true" behavior events generated from this behavior are broadcast during Apply Request Values phase. Otherwise, the events will be - broadcast during Invoke Aplications phase</p> - - + broadcast during Invoke Aplications phase

+]]> + ]]>
immediate false java.lang.Boolean
- - <p class="changed_added_2_0">Method expression referencing + Method expression referencing a method that will be called when an AjaxBehaviorEvent has been - broadcast for the listener.</p> - - + broadcast for the listener.

+]]> + ]]>
listener false public void @@ -495,28 +498,29 @@
- <p class="changed_added_2_0">The name of the JavaScript - function that will handle UI events.</p> - +The name of the JavaScript + function that will handle UI events.

+]]>
onevent false java.lang.String
- - <p class="changed_added_2_0">The name of the JavaScript - function that will handle errors.</p> + The name of the JavaScript + function that will handle errors.

-
+ ]]>
onerror false java.lang.String
- - <p class="changed_added_2_0">Evaluates to - Collection<String>. This is a space separated + Evaluates to + Collection. This is a space separated list of client ids of components that will participate in the "render" portion of the Request Processing Lifecycle. If a literal is specified the identifiers @@ -526,115 +530,115 @@ "@none" is assumed. For example, @this clientIdOne - clientIdTwo.</p> + clientIdTwo.

-
+ ]]>
render false java.util.Collection
- + Allow JSF page authors to + install ComponentSystemEventListener instances - on a component in a page.</p> + on a component in a page.

- <div class="changed_added_2_0"> +
- <p></p> +

- </div> +
-
+ ]]>
event com.sun.faces.facelets.tag.jsf.core.EventHandler - + Name of the event for which to install a listener. The following table lists the valid values for this attribute, and the corresponding event type for which the listener action is - registered.</p> + registered.

- <table border="1"> - <tr> + + - <th>value for "<code>type</code>" tag - attribute</th> + - <th>Type of event sent to listener method - </th> + - </tr> + - <tr> + - <td>preRenderComponent - </td> + - <td>javax.faces.event.PreRenderComponentEvent - </td> + - </tr> + - <tr> + - <td>postAddToView - </td> + - <td>javax.faces.event.PostAddToViewEvent - </td> + - </tr> + - <tr> + - <td>preValidate - </td> + - <td>javax.faces.event.PreValidateEvent - </td> + - </tr> + - <tr> + - <td>postValidate - </td> + - <td>javax.faces.event.PostValidateEvent - </td> + - </tr> + - </table> +
value for "type" tag + attributeType of event sent to listener method +
preRenderComponent + javax.faces.event.PreRenderComponentEvent +
postAddToView + javax.faces.event.PostAddToViewEvent +
preValidate + javax.faces.event.PreValidateEvent +
postValidate + javax.faces.event.PostValidateEvent +
- <div class="changed_added_2_0"> +
- <p>In addition to these values, the fully qualified class +

In addition to these values, the fully qualified class name of any java class that extends - <code>javax.faces.event.ComponentSystemEvent</code> + javax.faces.event.ComponentSystemEvent may be used as the - value of the "type" attribute.</p> + value of the "type" attribute.

- <p>Also, the <code>@javax.faces.event.NamedEvent</code> +

Also, the @javax.faces.event.NamedEvent annotation may be attached to any java class that extends - <code>javax.faces.event.ComponentSystemEvent</code>. + javax.faces.event.ComponentSystemEvent. This enables that event to be referenced from this attribute, as descibed in the javadocs - for <code>@NamedEvent</code>.</p> + for @NamedEvent.

- </div> +
-
+ ]]>
type true java.lang.String @@ -662,151 +666,151 @@
- + Register a named facet on the UIComponent associated with + the closest parent UIComponent custom action.

-
+ ]]>
facet com.sun.faces.facelets.tag.jsf.core.FacetHandler - + + ]]> name true java.lang.String
- + Declare the metadata facet for this view. This must be a child of the - <code>&lt;f:view&gt;</code>. This tag + &lt;f:view&gt;. This tag must reside within the top level XHTML file for the given viewId, or in a template client, but not in a template. The implementation must insure that the direct child of the - facet is a <code>UIPanel</code>, even if there + facet is a UIPanel, even if there is only one child of the facet. The implementation must set - the id of the <code>UIPanel</code> to be the + the id of the UIPanel to be the value of the - <code>UIViewRoot.METADATA_FACET_NAME</code> - symbolic constant.</p> + UIViewRoot.METADATA_FACET_NAME + symbolic constant.

- <div class="changed_added_2_0"> +
- <p>The implementation must allow templating for this element +

The implementation must allow templating for this element according - to the following pattern.</p> + to the following pattern.

- <p>template client XHTML view, view01.xhtml</p> +

template client XHTML view, view01.xhtml

- </div> +
- <div class="html4strict" style="font-family: monospace;"><ol><li - class="li1"><div class="de1"><span class="sc2">&lt;ui:composition - template=<span class="st0">&quot;template.xhtml&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - <span class="sc2">&lt;ui:define <span class="kw3">name</span>=<span - class="st0">&quot;metadata&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; <span class="sc2">&lt;f:metadata&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; &nbsp; <span class="sc2">&lt;f:viewParam - <span class="kw3">name</span>=<span class="st0">&quot;id&quot;</span>/<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/f:metadata&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - <span class="sc2">&lt;ui:define <span class="kw3">name</span>=<span - class="st0">&quot;content&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;h1&gt;</span></span>The - big news stories of the day<span class="sc2"><span - class="kw2">&lt;/h1&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li> - <li class="li2"><div class="de2"><span class="sc2"><span - class="kw2">&lt;</span>/ui:composition&gt;</span> - </div></li></ol></div></div> +
  1. &lt;ui:composition + template=&quot;template.xhtml&quot;&gt;
  2. +
  3. &nbsp; &nbsp; + &lt;ui:define name=&quot;metadata&quot;&gt;
  4. +
  5. &nbsp; &nbsp; + &nbsp; &lt;f:metadata&gt;
  6. +
  7. &nbsp; &nbsp; + &nbsp; &nbsp; &lt;f:viewParam + name=&quot;id&quot;/&gt;
  8. +
  9. &nbsp; &nbsp; + &nbsp; &lt;/f:metadata&gt;
  10. +
  11. &nbsp; &nbsp; + &lt;/ui:define&gt;
  12. +
  13. &nbsp; &nbsp; + &lt;ui:define name=&quot;content&quot;&gt;
  14. +
  15. &nbsp; &nbsp; + &nbsp; &nbsp; &lt;h1&gt;The + big news stories of the day&lt;/h1&gt;
  16. +
  17. &nbsp; &nbsp; + &lt;/ui:define&gt;
  18. +
  19. &lt;/ui:composition&gt; +
- <div class="changed_added_2_0"> - <p>Note line 4. The page author must ensure that the - <code>&lt;f:metadata&gt;</code> element does not +
+

Note line 4. The page author must ensure that the + &lt;f:metadata&gt; element does not appear on a template or included page. It must reside on the root page that corresponds to the - viewId.</p> + viewId.

- <p>The template page, template.xhtml</p> +

The template page, template.xhtml

- </div> +
- <div class="html4strict" style="font-family: monospace;"><ol><li - class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;html</span> xmlns=<span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; xmlns:ui=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; xmlns:f=<span class="st0">&quot;http://java.sun.com/jsf/core&quot;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; xml:<span class="kw3">lang</span>=<span - class="st0">&quot;en&quot;</span> <span - class="kw3">lang</span>=<span class="st0">&quot;en&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2"><span class="sc2"><span - class="kw2">&lt;body&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2">&lt;f:view&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - </div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; &nbsp; <span class="sc2">&lt;ui:insert <span - class="kw3">name</span>=<span class="st0">&quot;metadata&quot;</span>/<span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;div</span> - <span class="kw3">id</span>=<span class="st0">&quot;container&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; &nbsp; <span class="sc2">&lt;ui:insert <span - class="kw3">name</span>=<span class="st0">&quot;content&quot;</span>/<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;/div&gt;</span></span></div></li> - <li class="li2"><div class="de2"><span class="sc2"><span - class="kw2">&lt;</span>/f:view&gt;</span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;/body&gt;</span></span></div></li> - <li class="li2"><div class="de2"><span class="sc2"><span - class="kw2">&lt;/html&gt;</span></span> </div></li></ol></div></div> +
  1. &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
  2. +
  3. &nbsp; &nbsp; + &nbsp; xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;
  4. +
  5. &nbsp; &nbsp; + &nbsp; xmlns:f=&quot;http://java.sun.com/jsf/core&quot;
  6. +
  7. &nbsp; &nbsp; + &nbsp; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
  8. +
  9. &nbsp;
  10. +
  11. &lt;body&gt;
  12. +
  13. &lt;f:view&gt;
  14. +
  15. &nbsp; &nbsp; +
  16. +
  17. &nbsp; &nbsp; + &nbsp; &nbsp; &lt;ui:insert name=&quot;metadata&quot;/&gt;
  18. +
  19. &nbsp; &nbsp;
  20. +
  21. &nbsp; &nbsp; + &lt;div + id=&quot;container&quot;&gt;
  22. +
  23. &nbsp; &nbsp; + &nbsp; &nbsp; &lt;ui:insert name=&quot;content&quot;/&gt;
  24. +
  25. &nbsp; &nbsp; + &lt;/div&gt;
  26. +
  27. &lt;/f:view&gt;
  28. +
  29. &lt;/body&gt;
  30. +
  31. &lt;/html&gt;
- <p>The page author is not <em>required</em> to use +

The page author is not required to use templating, but if they do, it must be done as shown above, (or with - <code>&lt;ui:include&gt;</code> in a similar - manner).</p> + &lt;ui:include&gt; in a similar + manner).

- </div> + -
+ ]]>
metadata com.sun.faces.facelets.tag.jsf.core.MetadataHandler
- + + ]]> loadBundle com.sun.faces.facelets.tag.jsf.core.LoadBundleHandler - + + ]]> basename java.lang.String - + + ]]> var true java.lang.String - + + ]]> param javax.faces.Parameter - + + ]]> binding javax.faces.component.UIComponent - + + ]]> id false java.lang.String - + + ]]> name java.lang.String - + + ]]> value java.lang.String Flag enabling or disabling the inclusion of the + parameter. This flag is consulted by renderers that consider the - <code>UIParameter</code> component associated with this - <code><f:param></code> during their rendering. - Such renderers include <code>javax.faces.Output - javax.faces.Link</code> and - <code>javax.faces.OutcomeTarget - javax.faces.Link</code>.</span></p> + UIParameter component associated with this + during their rendering. + Such renderers include javax.faces.Output + javax.faces.Link and + javax.faces.OutcomeTarget + javax.faces.Link.

]]> @@ -902,82 +906,82 @@
- + Used inside of the metada facet + of a view, this tag causes a UIViewParameter to be attached as metadata for the current view. Because - <code>UIViewParameter</code> extends <code>UIInput</code> + UIViewParameter extends UIInput all of the attributes and nested child content for any - <code>UIInput</code> tags are valid on this tag as well.</p> + UIInput tags are valid on this tag as well.

-
+ ]]>
viewParam javax.faces.Parameter - + + ]]> name true java.lang.String - + + ]]> converter false javax.faces.convert.Converter - + + ]]> converterMessage false java.lang.String - + + ]]> id false java.lang.String - + + ]]> required false boolean - + + ]]> requiredMessage false java.lang.String - + + ]]> validator false void validate(javax.faces.context.FacesContext, @@ -994,46 +998,46 @@ - + + ]]> validatorMessage false java.lang.String - + + ]]> value false java.lang.Object - - <p> + MethodExpression representing a value change listener method that will be notified when a new value has been set for this input component. The expression must evaluate to a public - method that takes a <code>ValueChangeEvent</code> + method that takes a ValueChangeEvent parameter, - with a return type of void, <span class="changed_added_2_0">or + with a return type of void, or to a public method that takes no arguments with a return type of void. In the latter case, the method has no way of easily knowing what the new value is, but this can be useful in cases where a notification is needed that "this value - changed".</span> + changed". - </p> - +

+ ]]>
valueChangeListener false void @@ -1041,353 +1045,353 @@
- + + ]]> maxlength false int - + + ]]> binding false javax.faces.component.UIComponent - + If present, this attribute refers to the value of one of the exposed attached objects within the composite component inside - of which this tag is nested.</p> + of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> phaseListener com.sun.faces.facelets.tag.jsf.core.PhaseListenerHandler - + + ]]> type false java.lang.String - + + ]]> binding false javax.faces.event.PhaseListener - + + ]]> selectItem javax.faces.SelectItem - + + ]]> binding javax.faces.component.UIComponent - + + ]]> id false java.lang.String - + + ]]> itemDescription java.lang.String - + + ]]> itemDisabled java.lang.Boolean - + + ]]> itemLabel java.lang.String - + itemLabel attribute must be escaped. This flag is set to "true" by default. - + ]]> escapeItem java.lang.String - + + ]]> itemValue java.lang.String - + + ]]> value javax.faces.model.SelectItem - + + ]]> noSelectionOption java.lang.Boolean - - <p><span class="changed_modified_2_0">Add</span> a + Add a child UISelectItems component to the UIComponent associated - with the closed parent UIComponent custom action.</p> + with the closed parent UIComponent custom action.

- <p class="changed_modified_2_0">When iterating over the - select items, <code>toString()</code> must be called on +

When iterating over the + select items, toString() must be called on the - string rendered attribute values.</p> + string rendered attribute values.

- <p class="changed_added_2_0">Version 2 of the specification +

Version 2 of the specification introduces several new attributes, described below. These are: var, itemValue, - itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.</p> + itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.

-
+ ]]>
selectItems javax.faces.SelectItems - + + ]]> binding javax.faces.component.UIComponent - + + ]]> id false java.lang.String - + Value expression pointing at any Collection + or array. The member elements may be instances of + SelectItem or any Java Object. In the case where the member elements are plain Java Objects, several additional attributes must be used by the page author to correctly identify the data to the enclosing - <code>UISelectOne</code> or <code>UISelectMany</code> - component, as shown in the following example.</span> + UISelectOne or UISelectMany + component, as shown in the following example. - <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;h:selectOneListbox - <span class="kw3">size</span>=<span class="st0">&quot;1&quot;</span> - <span class="kw3">id</span>=<span class="st0">&quot;escape02&quot;</span> - <span class="kw3">value</span>=<span class="st0">&quot;#{select05NoSelection.initialCollectionValues}&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;f:selectItems <span class="kw3">value</span>=<span - class="st0">&quot;#{select05NoSelection.hobbitList}&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; +
  1. &lt;h:selectOneListbox + size=&quot;1&quot; + id=&quot;escape02&quot; + value=&quot;#{select05NoSelection.initialCollectionValues}&quot;&gt;
  2. +
  3. &nbsp; &lt;f:selectItems value=&quot;#{select05NoSelection.hobbitList}&quot;
  4. +
  5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;var=<span class="st0">&quot;n&quot;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; + &nbsp;var=&quot;n&quot;
  6. +
  7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;itemValue=<span class="st0">&quot;#{n}&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; + &nbsp;itemValue=&quot;#{n}&quot;
  8. +
  9. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;itemLabel=<span class="st0">&quot;#{n.bio}&quot;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; + &nbsp;itemLabel=&quot;#{n.bio}&quot;
  10. +
  11. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;itemDescription=<span class="st0">&quot;#{n.description}&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; + &nbsp;itemDescription=&quot;#{n.description}&quot;
  12. +
  13. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;itemDisabled=<span class="st0">&quot;#{n.disabled}&quot;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; + &nbsp;itemDisabled=&quot;#{n.disabled}&quot;
  14. +
  15. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;itemLabelEscaped=<span class="st0">&quot;true&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; + &nbsp;itemLabelEscaped=&quot;true&quot;
  16. +
  17. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;noSelectionValue=<span class="st0">&quot;#{select05NoSelection.hobbitList[0]}&quot;</span>/<span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2"><span - class="sc2"><span class="kw2">&lt;</span>/h:selectOneListbox&gt;</span> - </div></li></ol></div></div> + &nbsp;noSelectionValue=&quot;#{select05NoSelection.hobbitList[0]}&quot;/&gt;
  18. +
  19. &lt;/h:selectOneListbox&gt; +
- <p class="changed_added_2_0">In the preceding example, the - <code>value</code> attribute on line 1 points to a - <code>Collection&lt;HobbitBean&gt;</code>. - <code>HobbitBean</code> is +

In the preceding example, the + value attribute on line 1 points to a + Collection&lt;HobbitBean&gt;. + HobbitBean is just a regular Java Object (POJO) that conforms to JavaBeans naming - conventions for its properties. The <code>value</code> + conventions for its properties. The value attribute on - line 2 points to a <code>List&lt;HobbitBean&gt;</code>, + line 2 points to a List&lt;HobbitBean&gt;, though it could - just as well point to a <code>Collection</code>, + just as well point to a Collection, array, or - <code>javax.faces.model.DataModel</code>. The + javax.faces.model.DataModel. The attributes on lines 3 through 9, inclusive, leverage the fact that the value is a collection of POJOs. - </p> +

- </p> +

-
+ ]]>
value java.lang.Object
- + Expose the value from the + value attribute under this request scoped key so that it - may be referred to in EL for the value of other attributes.</p> + may be referred to in EL for the value of other attributes.

-
+ ]]>
var false java.lang.String
- + evaluates to a + Collection, array, or Map from which the items - to be shown will be rendered.</p> + to be shown will be rendered.

-
+ ]]>
itemValue java.lang.Object
- + evaluates to a String that will - serve as the label to be shown for the item.</p> + serve as the label to be shown for the item.

-
+ ]]>
itemLabel java.lang.String
- + evaluates to a String that will - serve as the description to be shown for the item.</p> + serve as the description to be shown for the item.

-
+ ]]>
itemDescription java.lang.String
- + evaluates to a boolean that will - determine if the item value is selectable or not.</p> + determine if the item value is selectable or not.

-
+ ]]>
itemDisabled java.lang.Boolean
- + evaluates to a boolean that will determine if the rendered markup for the item receives normal - JSF HTML escaping or not.</p> + JSF HTML escaping or not.

-
+ ]]>
itemLabelEscaped java.lang.Boolean
- + Is either an EL expression pointing to the element in the value collection whose value should be marked as a &#8220;no selection&#8221; item, or a @@ -1396,692 +1400,692 @@ must be marked as the &#8220;no selection&#8221; item. If the user selects such - an item <strong>and</strong> the field is marked as + an item and the field is marked as required, then it - will not pass validation.</p> + will not pass validation.

-
+ ]]>
noSelectionValue java.lang.Boolean
- - <p>Register an ActionListener instance on the UIComponent + Register an ActionListener instance on the UIComponent associated with the closest parent UIComponent custom action. This actionListener will cause the value given by the "value" attribute to be set into the ValueExpression given by the "target" - attribute.</p> + attribute.

- <p>The implementation of this tag creates a special - <code>ActionListener</code> instance and registers it on +

The implementation of this tag creates a special + ActionListener instance and registers it on the - <code>ActionSource</code> associated with our most + ActionSource associated with our most immediate surrounding instance of a tag whose implementation class is a subclass of - <code>UIComponentTag</code>. This tag creates no output + UIComponentTag. This tag creates no output to the page - currently being created.</p> + currently being created.

- <p>The <code>ActionListener</code> instance +

The ActionListener instance created and installed by - this tag has the following behavior and contract.</p> + this tag has the following behavior and contract.

- <ul> +
    - <li>Only create and register the <code>ActionListener</code> +
  • Only create and register the ActionListener instance - the first time the component for this tag is created</li> + the first time the component for this tag is created
  • - <li>The "target" and "value" tag attributes are +
  • The "target" and "value" tag attributes are ValueExpression instances and are stored unevaluated as instance variables of the - listener.</li> + listener.
  • - <li>When the listener executes, perform the following: - <ul> +
  • When the listener executes, perform the following: +
      Call getValue() on the "value" ValueExpression. - </ul> - <ul> +
    +
      If value of the "value" expression is null, call setValue() on the "target" ValueExpression with the null value. - </ul> - <ul> +
    +
      If the value of the "value" expression is not null, call getType() on the "value" and "target" ValueExpressions to determine their property types. - </ul> - <ul> +
    +
      Coerce the value of the "value" expression to the "target" expression value type following the Expression Language coercion rules. Call setValue() on the "target" ValueExpression with the resulting value. - </ul> - <ul> +
    +
      If either coercion or the execution of setValue() fails throw an AbortProcessingException. - </ul> - </li> +
    +
  • - </ul> - +
+ ]]>
setPropertyActionListener com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler - + + ]]> value true java.lang.String - + + ]]> target true java.lang.String - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> subview javax.faces.NamingContainer - + + ]]> binding javax.faces.component.UIComponent - + + ]]> id true java.lang.String - + + ]]> rendered java.lang.Boolean - + + ]]> validateDoubleRange javax.faces.DoubleRange com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler - - <p class="changed_added_2_0">A boolean value + A boolean value enabling page level determination of whether or not this - validator is enabled on the enclosing component.</p> + validator is enabled on the enclosing component.

-
+ ]]>
disabled java.lang.Boolean
- + + ]]> maximum java.lang.Double - + + ]]> minimum java.lang.Double - + + ]]> binding javax.faces.validator.DoubleRangeValidator - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> validateLength javax.faces.Length com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler - - <p class="changed_added_2_0">A boolean value + A boolean value enabling page level determination of whether or not this - validator is enabled on the enclosing component.</p> + validator is enabled on the enclosing component.

-
+ ]]>
disabled java.lang.Boolean
- + + ]]> maximum java.lang.Integer - + + ]]> minimum java.lang.Integer - + + ]]> binding javax.faces.validator.LengthValidator - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> validateLongRange javax.faces.LongRange com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler - - <p class="changed_added_2_0">A boolean value + A boolean value enabling page level determination of whether or not this - validator is enabled on the enclosing component.</p> + validator is enabled on the enclosing component.

-
+ ]]>
disabled java.lang.Boolean
- + + ]]> maximum java.lang.Long - + + ]]> minimum java.lang.Long - + + ]]> binding javax.faces.validator.LongRangeValidator - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- <p> + - <span class="changed_added_2_0"> + A validator that delegates the validation of the local value to the Bean Validation API. The validationGroups attribute serves as a filter that instructs the Bean Validation API which contraints to enforce. If there are any constraint violations reported by Bean Validation, the value is considered invalid. - </p> - +

+ ]]>
validateBean javax.faces.Bean com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler - + + ]]> validationGroups false java.lang.String - - <p class="changed_added_2_0">A boolean value + A boolean value enabling page level determination of whether or not this - validator is enabled on the enclosing component.</p> + validator is enabled on the enclosing component.

-
+ ]]>
disabled java.lang.Boolean
- + + ]]> binding javax.faces.validator.BeanValidator - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- <p> + - <span class="changed_added_2_0"> + A validator that uses the pattern attribute to validate the wrapping component. The entire pattern is matched against the String value of the component. If it matches, it's valid. - </p> - +

+ ]]>
validateRegex javax.faces.RegularExpression com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler - - <p class="changed_added_2_0">A boolean value + A boolean value enabling page level determination of whether or not this - validator is enabled on the enclosing component.</p> + validator is enabled on the enclosing component.

-
+ ]]>
disabled java.lang.Boolean
- + + ]]> pattern true java.lang.String - + + ]]> binding javax.faces.validator.RegexValidator - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + A validator that enforces the presence of a value. It has the same affect as setting the - required attribute on a UIInput to true.</p> + required attribute on a UIInput to true.

-
+ ]]>
validateRequired javax.faces.Required com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler - - <p class="changed_added_2_0">A boolean value + A boolean value enabling page level determination of whether or not this - validator is enabled on the enclosing component.</p> + validator is enabled on the enclosing component.

-
+ ]]>
disabled java.lang.Boolean
- + + ]]> binding javax.faces.validator.RequiredValidator - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + Register a named Validator instance on the UIComponent associated with the - closest parent UIComponent custom action.</p> + closest parent UIComponent custom action.

- <div class="changed_added_2_0"> +
- <p>Usage outside of an <code>EditableValueHolder</code> - parent</p> +

Usage outside of an EditableValueHolder + parent

- <p>If this element is nested within a - <code>UIComponent</code> tag that has other - <code>UIComponent</code> children, the validator will be +

If this element is nested within a + UIComponent tag that has other + UIComponent children, the validator will be automatically added to all the child components as well as this one. The implementation must ensure this occurs even if the parent of this element is not an instance of - <code>EditableValueHolder</code>.</p> + EditableValueHolder.

- </div> +
-
+ ]]>
validator com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler - - <p class="changed_added_2_0">A boolean value + A boolean value enabling page level determination of whether or not this - validator is enabled on the enclosing component.</p> + validator is enabled on the enclosing component.

-
+ ]]>
disabled java.lang.Boolean
- + + ]]> validatorId java.lang.String - + + ]]> binding javax.faces.validator.Validator - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> valueChangeListener com.sun.faces.facelets.tag.jsf.core.ValueChangeListenerHandler - + + ]]> type java.lang.String - + + ]]> binding false javax.faces.event.ValueChangeListener - + If present, this attribute refers to the value of one of the exposed attached objects within the - composite component inside of which this tag is nested.</p> + composite component inside of which this tag is nested.

-
+ ]]>
for false java.lang.String
- + + ]]> verbatim javax.faces.Output javax.faces.Text - + + ]]> escape java.lang.Boolean - + + ]]> rendered false java.lang.Boolean - + + ]]> view javax.faces.ViewRoot - + + ]]> locale java.lang.Object - + + ]]> renderKitId false java.lang.String - + + ]]> contentType false java.lang.String - + + ]]> encoding false java.lang.String - + + ]]> beforePhase false void beforePhase(javax.faces.event.PhaseEvent) - + + ]]> afterPhase false void afterPhase(javax.faces.event.PhaseEvent) Index: jsf-ri/conf/share/jstl-core.taglib.xml =================================================================== --- jsf-ri/conf/share/jstl-core.taglib.xml (revision 8717) +++ jsf-ri/conf/share/jstl-core.taglib.xml (working copy) @@ -46,97 +46,97 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0"> -JSTL 1.2 core library

-<p>The pre JSF 2.0 version of Facelets incorrectly declared the taglib -uri to be <code>http://java.sun.com/jstl/core</code>. For backwards +

The pre JSF 2.0 version of Facelets incorrectly declared the taglib +uri to be http://java.sun.com/jstl/core. For backwards compatibility implementations must correctly handle inclusions with the -incorrect uri, and the correct uri, declared here.</p> +incorrect uri, and the correct uri, declared here.

]]>
http://java.sun.com/jsp/jstl/core - + + ]]> catch com.sun.faces.facelets.tag.jstl.core.CatchHandler - + + ]]> var false java.lang.String - + + and + ]]> choose com.sun.faces.facelets.tag.jstl.core.ChooseHandler - + + ]]> if com.sun.faces.facelets.tag.jstl.core.IfHandler - + + ]]> test true boolean - + + ]]> var false java.lang.String - + + ]]> scope false java.lang.String - + + ]]> forEach com.sun.faces.facelets.tag.jstl.core.ForEachHandler - + + ]]> items false java.lang.Object - + + ]]> begin false int - + + ]]> end false int - + + ]]> step false int - + + ]]> var false java.lang.String - + + ]]> varStatus false java.lang.String - - Subtag of <choose> that follows <when> tags + that follows tags and runs only if all of the prior conditions evaluated to 'false' - + ]]> otherwise com.sun.faces.facelets.tag.jstl.core.ChooseOtherwiseHandler - - <p>Sets the result of an expression evaluation based on the + Sets the result of an expression evaluation based on the value of the attributes. If "scope" the is present, but has a zero - length or is equal to the string "page", <code>TagException</code> + length or is equal to the string "page", TagException is thrown with an informative error message, ensuring page location - information is saved.</p> + information is saved.

- <p>This handler operates in one of two ways. +

This handler operates in one of two ways. - <ol> +

    - <li><p>The user has set "var", "value" and (optionally) - "scope" attributes.</p></li> +
  1. The user has set "var", "value" and (optionally) + "scope" attributes.

  2. - <li><p>The user has set "target", "property", and +
  3. The user has set "target", "property", and "value" - attributes.</p></li> + attributes.

  4. - </ol> +
- <p>The first case takes precedence over the second.</p> +

The first case takes precedence over the second.

-
+ ]]>
set com.sun.faces.facelets.tag.jstl.core.SetHandler - + + ]]> var false java.lang.String - + + ]]> value false java.lang.Object - + + ]]> target false java.lang.String - + + ]]> property false java.lang.String - + + ]]> scope false java.lang.String
- + + ]]> when com.sun.faces.facelets.tag.jstl.core.ChooseWhenHandler - + + ]]> test true boolean Index: jsf-ri/conf/share/composite.taglib.xml =================================================================== --- jsf-ri/conf/share/composite.taglib.xml (revision 8717) +++ jsf-ri/conf/share/composite.taglib.xml (working copy) @@ -45,14 +45,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0"> - + - <div class="changed_added_2_0"> +
- <p>Describes the Facelets2 tag library used for declaring and +

Describes the Facelets2 tag library used for declaring and defining the usage contract for composite UI Components. When authoring a composite component, use of this tag library is largely optional, @@ -64,915 +64,915 @@ PENDING: the limit of what one can do without declaring and defining a usage contract must be cleary specified and documented. PENDING: The implementation team must help discover these limits. - </p> +

- <h2>Creating a Composite Component</h2> +

Creating a Composite Component

- <p>The default implementation must support authoring A composite +

The default implementation must support authoring A composite component is declared by creating a Facelets2 file inside of a resource library. (See section JSF.2.6 of the specification prose document for more information about resource libraries.) A composite component must reside within a resource library. It is not possible to create a composite component without putting it inside of a resource - library.</p> + library.

- <p>The default XML namespace URI of the taglib that contains the - composite component, for use in <em>the using page</em>, is - <code>http://java.sun.com/jsf/composite/&lt;composite-library-name&gt;</code>, - where <code>&lt;composite-library-name&gt;</code> is +

The default XML namespace URI of the taglib that contains the + composite component, for use in the using page, is + http://java.sun.com/jsf/composite/&lt;composite-library-name&gt;, + where &lt;composite-library-name&gt; is the name of the - resource library. For example:</p> + resource library. For example:

- <pre><code> +

         &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        <br />
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br
-        />
-        &lt;html xmlns="http://www.w3.org/1999/xhtml"<br />
-        xmlns:h="http://java.sun.com/jsf/html"<br />
-        xmlns:f="http://java.sun.com/jsf/core"<br />
-        xmlns:ui="http://java.sun.com/jsf/facelets"<br />
-        xmlns:ez="<i>http://java.sun.com/jsf/composite/<b>ezcomp</b></i>"&gt;<br
-        />
-        ...<br />
-        </code></pre>
+        
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
+ &lt;html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:ez="http://java.sun.com/jsf/composite/ezcomp"&gt;
+ ...
+
- <p>This declares that any Facelets2 file in the resource - library called <code>ezcomp</code> can be used as a regular +

This declares that any Facelets2 file in the resource + library called ezcomp can be used as a regular JSF UI component in a view with the above namespace declaration by using the - "<code>ez</code>" prefix. For example, placing a file called - <code>foo.xhtml</code> in a resource library called <code>ezcomp</code> - would make that file accessible like this.</p> + "ez" prefix. For example, placing a file called + foo.xhtml in a resource library called ezcomp + would make that file accessible like this.

- <pre><code> +

         &lt;ez:foo /&gt;
-        </code></pre>
+        
- <p>The implementation must also support declaring the +

The implementation must also support declaring the namespace of the tag library in a JSF VDL tag library descriptor. This descriptor file is optional and is useful for component vendors that do not want to use the default XML namespace. This version of the proposal currently uses the facelet taglib descriptor syntax. For - example: </p> + example:

- <pre><code> - &lt;facelet-taglib&gt;<br /> +

+        &lt;facelet-taglib&gt;
&lt;namespace&gt;http://domain.com/path&lt;/namespace&gt; - <br /> +
&lt;composite-library-name&gt;compositeTest&lt;/composite-library-name&gt; - <br /> - &lt;/facelet-taglib&gt; <br /> - </code></pre> +
+ &lt;/facelet-taglib&gt;
+
- <p>Components from that taglibrary may be used in a using page by - declaring them in the XML namespace for that view:</p> +

Components from that taglibrary may be used in a using page by + declaring them in the XML namespace for that view:

- <pre><code> +

         &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        <br />
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br
-        />
-        &lt;html xmlns="http://www.w3.org/1999/xhtml"<br />
-        xmlns:h="http://java.sun.com/jsf/html"<br />
-        xmlns:f="http://java.sun.com/jsf/core"<br />
-        xmlns:ui="http://java.sun.com/jsf/facelets"<br />
-        xmlns:ez="<i><b>http://domain.com/path/namespace</b></i>"&gt;<br
-        />
-        ...<br />
-        </code></pre>
+        
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
+ &lt;html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:ez="http://domain.com/path/namespace"&gt;
+ ...
+
- <p><a name="composite_example">Below is an example of a +

Below is an example of a fairly involved composite component declaration. Such a declaration might - appear in <code>foo.xhtml</code>.</a></p> + appear in foo.xhtml.

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;<a - href="interface.html">composite:interface</a> <span - class="kw3">name</span>=<span class="st0">&quot;foo&quot;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; +
  1. &lt;composite:interface name=&quot;foo&quot;
  2. +
  3. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;displayName=<span class="st0">&quot;Very Simple - Login Panel&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; + &nbsp;displayName=&quot;Very Simple + Login Panel&quot;
  4. +
  5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;preferred=<span class="st0">&quot;true&quot;</span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; + &nbsp;preferred=&quot;true&quot;
  6. +
  7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;expert=<span class="st0">&quot;false&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; + &nbsp;expert=&quot;false&quot;
  8. +
  9. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp;shortDescription=<span class="st0">&quot;An - illustration of the composite component feature&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;<a href="attribute.html">composite:attribute</a> - <span class="kw3">name</span>=<span class="st0">&quot;model&quot;</span> - required=<span class="st0">&quot;true&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; <span - class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span - class="st0">&quot;loginAction&quot;</span> required=<span - class="st0">&quot;true&quot;</span> method-signature=<span - class="st0">&quot;java.lang.Object action()&quot;</span>/ - <span class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/composite:attribute&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span - class="st0">&quot;valueChangeListener&quot;</span> - targets=<span class="st0">&quot;username&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span - class="st0">&quot;specialMethodExpression&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; + &nbsp;shortDescription=&quot;An + illustration of the composite component feature&quot;&gt;
  10. +
  11. &nbsp; &lt;composite:attribute + name=&quot;model&quot; + required=&quot;true&quot;&gt;
  12. +
  13. &nbsp; &nbsp; &lt;composite:attribute name=&quot;loginAction&quot; required=&quot;true&quot; method-signature=&quot;java.lang.Object action()&quot;/ + &gt;
  14. +
  15. &nbsp; &lt;/composite:attribute&gt;
  16. +
  17. &nbsp; &lt;composite:attribute name=&quot;valueChangeListener&quot; + targets=&quot;username&quot; + /&gt;
  18. +
  19. &nbsp; &lt;composite:attribute name=&quot;specialMethodExpression&quot;
  20. +
  21. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; &nbsp;method-signature=<span class="st0">&quot;com.foo.User - validateCurrentUser()&quot;</span> /<span class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span - class="st0">&quot;loginButtonLabel&quot;</span> - default=<span class="st0">&quot;Login&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2">&lt;<a href="editableValueHolder.html">composite:editableValueHolder</a> - <span class="kw3">name</span>=<span class="st0">&quot;username&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;loginEvent&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;cancelEvent&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;allEvents&quot;</span> targets=<span - class="st0">&quot;loginEvent cancelEvent&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2"><span class="sc2">&lt;<a - href="implementation.html">composite:implementation</a> <span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;ui:decorate template=<span class="st0">&quot;fooTemplate.xhtml&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc2">&lt;ui:define <span class="kw3">name</span>=<span - class="st0">&quot;header&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;p&gt;</span></span>This - is the login panel header<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc2">&lt;ui:define <span class="kw3">name</span>=<span - class="st0">&quot;body&quot;</span><span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;p&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; &nbsp;<span class="sc2">&lt;h:inputText <span - class="kw3">id</span>=<span class="st0">&quot;username&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;p&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc2">&lt;h:commandButton <span - class="kw3">id</span>=<span class="st0">&quot;loginEvent&quot;</span> - </div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; + &nbsp; &nbsp;method-signature=&quot;com.foo.User + validateCurrentUser()&quot; /&gt;
  22. +
  23. &nbsp; &lt;composite:attribute name=&quot;loginButtonLabel&quot; + default=&quot;Login&quot; /&gt;
  24. +
  25. &nbsp; &lt;composite:editableValueHolder + name=&quot;username&quot; + /&gt;
  26. +
  27. &nbsp; &lt;composite:actionSource name=&quot;loginEvent&quot; /&gt;
  28. +
  29. &nbsp; &lt;composite:actionSource name=&quot;cancelEvent&quot; /&gt;
  30. +
  31. &nbsp; &lt;composite:actionSource name=&quot;allEvents&quot; targets=&quot;loginEvent cancelEvent&quot; /&gt;
  32. +
  33. &lt;/composite:interface&gt;
  34. +
  35. +
  36. &nbsp;
  37. +
  38. &nbsp; &lt;ui:decorate template=&quot;fooTemplate.xhtml&quot;&gt;
  39. +
  40. &nbsp;
  41. +
  42. &nbsp; &nbsp; &lt;ui:define name=&quot;header&quot;&gt;
  43. +
  44. &nbsp;
  45. +
  46. &nbsp; &nbsp; &nbsp; + &lt;p&gt;This + is the login panel header&lt;/p&gt;
  47. +
  48. &nbsp;
  49. +
  50. &nbsp; &nbsp; &lt;/ui:define&gt;
  51. +
  52. &nbsp;
  53. +
  54. &nbsp; &nbsp; &lt;ui:define name=&quot;body&quot;&gt;
  55. +
  56. &nbsp;
  57. +
  58. &nbsp; &nbsp; &nbsp; + &lt;p&gt;
  59. +
  60. &nbsp;
  61. +
  62. &nbsp; &nbsp; &nbsp; + &nbsp; &nbsp;&lt;h:inputText id=&quot;username&quot; + /&gt;
  63. +
  64. &nbsp;
  65. +
  66. &nbsp; &nbsp; &nbsp; + &lt;/p&gt;
  67. +
  68. &nbsp;
  69. +
  70. &nbsp; &nbsp; &nbsp; + &lt;p&gt;
  71. +
  72. &nbsp;
  73. +
  74. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;h:commandButton id=&quot;loginEvent&quot; +
  75. +
  76. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; &nbsp; &nbsp;<span class="kw3">value</span>=<span - class="st0">&quot;#{cc.attrs.loginButtonLabel}&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/h:commandButton&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc2">&lt;h:commandButton <span - class="kw3">id</span>=<span class="st0">&quot;cancelEvent&quot;</span> - <span class="kw3">value</span>=<span class="st0">&quot;Cancel&quot;</span> - <span class="kw3">action</span>=<span class="st0">&quot;cancel&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/h:commandButton&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc2">&lt;special:validateUserButton - </div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; &nbsp; validateUser=<span class="st0">&quot;#{cc.attrs.specialMethodExpression}&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; <span - class="sc2">&lt;ui:define <span class="kw3">name</span>=<span - class="st0">&quot;footer&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;<span - class="sc2"><span class="kw2">&lt;p&gt;</span></span>This - is the login panel footer<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/ui:decorate&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:implementation&gt;</span> - </div></li></ol></div></div> + &nbsp; &nbsp; &nbsp;value=&quot;#{cc.attrs.loginButtonLabel}&quot;&gt;
  77. +
  78. &nbsp;
  79. +
  80. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;/h:commandButton&gt;
  81. +
  82. &nbsp;
  83. +
  84. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;h:commandButton id=&quot;cancelEvent&quot; + value=&quot;Cancel&quot; + action=&quot;cancel&quot;&gt;
  85. +
  86. &nbsp;
  87. +
  88. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;/h:commandButton&gt;
  89. +
  90. &nbsp;
  91. +
  92. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;special:validateUserButton +
  93. +
  94. &nbsp; &nbsp; &nbsp; + &nbsp; &nbsp; validateUser=&quot;#{cc.attrs.specialMethodExpression}&quot; + /&gt;
  95. +
  96. &nbsp;
  97. +
  98. &nbsp;
  99. +
  100. &nbsp; &nbsp; &nbsp; + &lt;/p&gt;
  101. +
  102. &nbsp;
  103. +
  104. &nbsp; &nbsp; &lt;/ui:define&gt;
  105. +
  106. &nbsp;
  107. +
  108. &nbsp; &nbsp; &lt;ui:define name=&quot;footer&quot;&gt;
  109. +
  110. &nbsp;
  111. +
  112. &nbsp; &nbsp; &nbsp;&lt;p&gt;This + is the login panel footer&lt;/p&gt;
  113. +
  114. &nbsp;
  115. +
  116. &nbsp; &nbsp; &lt;/ui:define&gt;
  117. +
  118. &nbsp;
  119. +
  120. &nbsp; &lt;/ui:decorate&gt;
  121. +
  122. &nbsp;
  123. +
  124. &lt;/composite:implementation&gt; +
- <p>The values for attributes in a composite component VDL file can +

The values for attributes in a composite component VDL file can be fully localized by putting them inside a ResourceBundle in the same directory as the VDL view and accessing them with the per-component - resource bundle syntax. Consider the file <code>foo.xhtml</code>, + resource bundle syntax. Consider the file foo.xhtml, in - the resource library <code>ezcomp</code>. The - <code>shortDescription</code> element could be changed to - be:</p> + the resource library ezcomp. The + shortDescription element could be changed to + be:

- <pre><code> +

         &lt;composite:interface
         shortDescription="#{cc.resourceBundleMap.shortDescription}" &gt;
-        </code></pre>
+        
- <p>In this case, In the same <code>ezcomp</code> +

In this case, In the same ezcomp directory as - <code>foo.xhtml</code>, there would be a <code>foo.properties</code> - file that would contain this entry:</p> + foo.xhtml, there would be a foo.properties + file that would contain this entry:

- <pre><code> +

         shortDescription=A really nifty login panel.
-        </code></pre>
+        
- <p>The normal localization rules for <code>ResourceBundle</code> +

The normal localization rules for ResourceBundle would - apply.</p> + apply.

- </div> +
- <pre> +
 
 
-    
+    ]]>
     http://java.sun.com/jsf/composite
     
-        
+        
 
-            <p>This element declares the usage contract for a composite
+            

This element declares the usage contract for a composite component. Optionally, and at the component author's discretion, this contract exposes the features of one or more inner components to the page author. The page author can work with the composite component as a single component whose feature set is the union of the features declared in - the usage contract.</p> + the usage contract.

- <p>For example, consider a composite component that +

For example, consider a composite component that implements the functionality of a "login panel". Such a component would likely have two text fields and one button. The user of such a component might like to do one or more of - the following.</p> + the following.

- <ul> +
    - <li><p>Be able to listen for the <code>ActionEvent</code> - on the button.</p> +
  • Be able to listen for the ActionEvent + on the button.

    - <p>In this case, a - <code>&lt;composite:actionSource&gt;</code> +

    In this case, a + &lt;composite:actionSource&gt; element is included in the usage contract that refers to the inner - button in the <code>&lt;composite:implementation&gt;</code> - section.</p> + button in the &lt;composite:implementation&gt; + section.

    - </li> +
  • - <li><p>Provide an "action" to invoke when the button is +
  • Provide an "action" to invoke when the button is pressed. - </p> +

    - <p>In this case, a - <code>&lt;composite:attribute&gt;</code> element +

    In this case, a + &lt;composite:attribute&gt; element is included in the usage contract that refers to the inner button in the - <code>&lt;composite:implementation&gt;</code> + &lt;composite:implementation&gt; section and - declares the proper method signature for an "action".</p> + declares the proper method signature for an "action".

    - </li> +
  • - <li><p>Provide parameters to the composite component for +
  • Provide parameters to the composite component for labels and other rendering specific aspects of the composite - component.</p> + component.

    - <p>In this case, one or more - <code>&lt;composite:attribute&gt;</code> +

    In this case, one or more + &lt;composite:attribute&gt; elements are included in the usage contract and those parameters are referred to in - the <code>&lt;composite:implementation&gt;</code> + the &lt;composite:implementation&gt; section using EL expressions like - <code>#{cc.attrs.usernameLabel}</code>, - assuming <code>usernameLabel</code> is the <code>name</code> - of one of the <code>&lt;composite:attribute&gt;</code> - elements in the usage contract.</p> + #{cc.attrs.usernameLabel}, + assuming usernameLabel is the name + of one of the &lt;composite:attribute&gt; + elements in the usage contract.

    - </li> +
  • - <li><p>Add <code>ValueChangeListener</code>s, - <code>Converter</code>s, or <code>Validator</code>s +
  • Add ValueChangeListeners, + Converters, or Validators to either or both text fields. - </p> +

    - <p>In this case, a - <code>&lt;composite:editableValueHolder&gt;</code> +

    In this case, a + &lt;composite:editableValueHolder&gt; element is included in the usage contract that refers to the inner text - field in the <code>&lt;composite:implementation&gt;</code> + field in the &lt;composite:implementation&gt; section. In the case of wanting to enable only adding a - <code>Converter</code> (and not a - <code>ValueChangeListener</code> or <code>Validator</code>, + Converter (and not a + ValueChangeListener or Validator, a - <code>&lt;composite:valueHolder&gt;</code> + &lt;composite:valueHolder&gt; element would be - used.</p> + used.

    - </li> +
  • - <li><p>Add facet children to the login panel.</p> +
  • Add facet children to the login panel.

    - <p>In this case, a <code>&lt;composite:facet&gt;</code> +

    In this case, a &lt;composite:facet&gt; element is included in the usage contract that refers to the - inner <code>&lt;composite:renderFacet&gt;</code> + inner &lt;composite:renderFacet&gt; element in - the <code>&lt;composite:implementation&gt;</code> + the &lt;composite:implementation&gt; section. - </p> +

    - </li> +
  • - </ul> +
- <p>For each of the behaviorial interfaces in Section JSF.3.2 +

For each of the behaviorial interfaces in Section JSF.3.2 of the specification, there is a tag in the - <code>composite:</code> library to nest inside of the - <code>&lt;composite:interface&gt;</code> + composite: library to nest inside of the + &lt;composite:interface&gt; section. - </p> +

- <p>If the <code>&lt;composite:interface&gt;</code> +

If the &lt;composite:interface&gt; section - is not present in a <em>VDL view</em>, the contract will + is not present in a VDL view, the contract will be inferred as described in the specification. There must be zero or one of these elements in a composite component VDL - file. If a <code>&lt;composite:interface&gt;</code> + file. If a &lt;composite:interface&gt; element does appear, there must be an accompanying - <code>&lt;composite:implementation&gt;</code> + &lt;composite:implementation&gt; element in the - same VDL file. </p> + same VDL file.

- <p><b>Nesting of composite components</b></p> +

Nesting of composite components

- <p>The implementation must support nesting of composite +

The implementation must support nesting of composite components. Specifically, it must be possible for the - <code>&lt;composite:implementation&gt;</code> + &lt;composite:implementation&gt; section of a - composite component to act as the <em>using page</em> + composite component to act as the using page for another composite component. When a composite component - exposes a behavioral interface to the <em>using page</em>, - such as a <code>&lt;composite:actionSource&gt;</code>, - <code>&lt;composite:editableValueHolder&gt;</code>, - <code>&lt;composite:valueHolder&gt;</code> or + exposes a behavioral interface to the using page, + such as a &lt;composite:actionSource&gt;, + &lt;composite:editableValueHolder&gt;, + &lt;composite:valueHolder&gt; or other behavioral interface, it must be possible to &#8220;propogate&#8221; the exposure of such an interface in the case of a nested composite component. The composite component author must ensure that the value of the - <code>name</code> attributes exactly match at all levels + name attributes exactly match at all levels of the nesting to enable this exposure to work. The implementation is not required to support &#8220;re-mapping&#8221; of names in a nested composite - component.</p> + component.

- <p>For example, consider this nested composite component.</p> +

For example, consider this nested composite component.

- <p>Using page</p> +

Using page

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;ez:actionSourceOuter&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span - class="st0">&quot;button1&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/ez:actionSourceOuter&gt;</span> - </div></li></ol></div></div> +
  1. &lt;ez:actionSourceOuter&gt;
  2. +
  3. &nbsp; &lt;f:actionListener for=&quot;button1&quot; /&gt;
  4. +
  5. &lt;/ez:actionSourceOuter&gt; +
- <p>actionSourceOuter.xhtml: Outer composite component</p> +

actionSourceOuter.xhtml: Outer composite component

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;button1&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;ez:actionSourceInner /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:implementation&gt;</span> - </div></li></ol></div></div> +
  1. &lt;composite:interface&gt;
  2. +
  3. &nbsp; &lt;composite:actionSource name=&quot;button1&quot; /&gt;
  4. +
  5. &lt;/composite:interface&gt;
  6. +
  7. &nbsp;
  8. +
  9. &lt;composite:implementation&gt;
  10. +
  11. &nbsp; &lt;ez:actionSourceInner /&gt;
  12. +
  13. &lt;/composite:implementation&gt; +
- <p>actionSourceInner.xhtml: the composite component used +

actionSourceInner.xhtml: the composite component used within a - composite component.</p> + composite component.

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;button1&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;h:commandButton <span class="kw3">id</span>=<span - class="st0">&quot;button1&quot;</span> <span - class="kw3">value</span>=<span class="st0">&quot;the - real button&quot;</span> /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:implementation&gt;</span> - </div></li></ol></div></div> +
  1. &lt;composite:interface&gt;
  2. +
  3. &nbsp; &lt;composite:actionSource name=&quot;button1&quot; /&gt;
  4. +
  5. &lt;/composite:interface&gt;
  6. +
  7. &nbsp;
  8. +
  9. &lt;composite:implementation&gt;
  10. +
  11. &nbsp; &lt;h:commandButton id=&quot;button1&quot; value=&quot;the + real button&quot; /&gt;
  12. +
  13. &lt;/composite:implementation&gt; +
- <p>The <code>id</code> of the <code>&lt;h:commandButton&gt;</code> +

The id of the &lt;h:commandButton&gt; on - line 6 of actionSourceInner.xhtml must match the <code>name</code> + line 6 of actionSourceInner.xhtml must match the name on line 2 of that file (this is a standard requirement for all composite - components, nested or not). That <code>id</code> must + components, nested or not). That id must also match the - <code>name</code> on line 2 of actionSourceOuter.xhtml, + name on line 2 of actionSourceOuter.xhtml, and the - <code>for</code> on line 2 of the using page.</p> + for on line 2 of the using page.

- <p>The implementation must support any level of nesting as +

The implementation must support any level of nesting as long as the - <code>for</code>, <code>name</code>, and - <code>id</code> values match - up. Furthermore, the <code>targets</code> attribute is + for, name, and + id values match + up. Furthermore, the targets attribute is also valid for - use in this nested fashion.</p> + use in this nested fashion.

- <p><b>Naming containers within composite components</b></p> +

Naming containers within composite components

- <p>Composite components are themselves naming containers so +

Composite components are themselves naming containers so that any possible id conflicts between inner components and components in the using page are avoided. However, special care must be taken when using - naming containers in the <code>&lt;composite:implementation&gt;</code> + naming containers in the &lt;composite:implementation&gt; section. In such cases the value of the &#8220;name&#8221; attribute, or the values of the &#8220;targets&#8221; attribute must be used with a - clientId relative to the <em>top level component</em> to + clientId relative to the top level component to expose any - attached object targets to the using page. For example:</p> + attached object targets to the using page. For example:

- <p>Using page</p> +

Using page

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;ez:loginButton&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span - class="st0">&quot;button&quot;</span> <span - class="kw3">binding</span>=<span class="st0">&quot;#{foo.actionListener}&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/ez:loginButton&gt;</span> - </div></li></ol></div></div> +
  1. &lt;ez:loginButton&gt;
  2. +
  3. &nbsp; &lt;f:actionListener for=&quot;button&quot; binding=&quot;#{foo.actionListener}&quot; + /&gt;
  4. +
  5. &lt;/ez:loginButton&gt; +
- <p>loginButton.xhtml</p> +

loginButton.xhtml

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;button&quot;</span> targets=<span - class="st0">&quot;form:button&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2">&lt;h:form <span class="kw3">id</span>=<span - class="st0">&quot;form&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - <span class="sc2">&lt;h:commandButton <span class="kw3">id</span>=<span - class="st0">&quot;button&quot;</span> <span - class="kw3">value</span>=<span class="st0">&quot;Submit&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/h:form&gt;</span></div></li> - <li class="li2"><div class="de2"><span class="sc2"><span - class="kw2">&lt;</span>/composite:implementation&gt;</span> - </div></li></ol></div></div> +
  1. &lt;composite:interface&gt;
  2. +
  3. &nbsp; &lt;composite:actionSource name=&quot;button&quot; targets=&quot;form:button&quot; /&gt;
  4. +
  5. &lt;/composite:interface&gt;
  6. +
  7. &nbsp;
  8. +
  9. &lt;composite:implementation&gt;
  10. +
  11. &nbsp;
  12. +
  13. &nbsp; &lt;h:form id=&quot;form&quot;&gt;
  14. +
  15. &nbsp; &nbsp; + &lt;h:commandButton id=&quot;button&quot; value=&quot;Submit&quot; + /&gt;
  16. +
  17. &nbsp; &lt;/h:form&gt;
  18. +
  19. &lt;/composite:implementation&gt; +
- <p>Because the button on line 8 resides within a form, it must +

Because the button on line 8 resides within a form, it must be - referred to using a client id, relative to the <em>top level - component</em>, in the "targets" attribute on line 2. Using a + referred to using a client id, relative to the top level + component, in the "targets" attribute on line 2. Using a relative clientId is required due to the semantics of - <code>UIComponent.findComponent()</code>.</p> + UIComponent.findComponent().

- </div> + -
+ ]]>
interface com.sun.faces.facelets.tag.composite.InterfaceHandler - + +

The name of this composite component. Advisory only. The real name is taken from the filename. The value of this attribute will be set as - the value for this property on the <em>composite - component bean descriptor</em>.</p></div> + the value for this property on the composite + component bean descriptor.

-
+ ]]>
name false java.lang.String
- + +

The component-type of the UIComponent that - will serve as the <em>composite component root</em> + will serve as the composite component root for this composite - component. The declared <code>component-family</code> + component. The declared component-family for this - component must be <code>javax.faces.NamingContainer</code>.</p></div> + component must be javax.faces.NamingContainer.

-
+ ]]>
componentType false java.lang.String
- + +

The name to display in a tool palette containing this component. The value of this attribute will be set as - the value for this property on the <em>composite - component bean descriptor</em>.</p></div> + the value for this property on the composite + component bean descriptor.

-
+ ]]>
displayName false java.lang.String
- + +

Is this a "preferred" component. The value of this attribute will be set as the value for this - property on the <em>composite component bean - descriptor</em>.</p></div> + property on the composite component bean + descriptor.

-
+ ]]>
preferred false boolean
- + +

Is this component only for expert users? The value of this attribute will be set as the value for - this property on the <em>composite component bean - descriptor</em>.</p></div> + this property on the composite component bean + descriptor.

-
+ ]]>
expert false boolean
- + +

A short description of the purpose of this component. The value of this attribute will be set as - the value for this property on the <em>composite - component bean descriptor</em>.</p></div> + the value for this property on the composite + component bean descriptor.

-
+ ]]>
shortDescription false java.lang.String
- + +

Defines the implementation of the composite component. There must be zero or one of these in a composite component markup file. If a - <code>&lt;composite:interface&gt;</code> element + &lt;composite:interface&gt; element appears, there must be a corresponding - <code>&lt;composite-implementation&gt;</code> + &lt;composite-implementation&gt; element. If no - <code>&lt;composite:interface&gt;</code> element + &lt;composite:interface&gt; element appears, - the <code>&lt;composite-implementation&gt;</code> + the &lt;composite-implementation&gt; element is - optional. </p> </div> - + optional.

+ ]]>
implementation com.sun.faces.facelets.tag.composite.ImplementationHandler
- + +

Declares an attribute that may be given to an instance of the - <em>composite component</em> tag for this composite + composite component tag for this composite component. There may be zero or many of these inside of the - <code>&lt;composite:interface</code>&gt; + &lt;composite:interface&gt; section. This element may be - nested within other <code>&lt;composite:attribute&gt;</code> + nested within other &lt;composite:attribute&gt; elements to - convey a usage contract that includes nested properties.</p> + convey a usage contract that includes nested properties.

- <p>Please see <a href="tld-summary.html#composite_example">summary - page</a> for a usage example.</p> +

Please see summary + page for a usage example.

- <p>The <em>top level component</em> in which this +

The top level component in which this element is - ultimately nested must be a <code>NamingContainer</code>. + ultimately nested must be a NamingContainer. There are certain component properties that must not be exposed using this element. The motivation for this restriction is that the mapping of markup attributes to component properties/attributes does not allow for these attributes to be set. The following properties must not be - exposed using this element.</p> + exposed using this element.

- <ul> - <li><p>binding</p></li> - <li><p>id</p></li> - <li><p>inView</p></li> - <li><p>parent</p></li> - <li><p>rendered</p></li> - <li><p>rendererType</p></li> - <li><p>transient</p></li> - </ul> +
    +
  • binding

  • +
  • id

  • +
  • inView

  • +
  • parent

  • +
  • rendered

  • +
  • rendererType

  • +
  • transient

  • +
- </div> -
+ + ]]>
attribute com.sun.faces.facelets.tag.composite.AttributeHandler - + +

The name of the attribute as it must appear on the composite + component tag in the using page. If the value of the - <em>name</em> attribute is equal to (without the + name attribute is equal to (without the quotes) &#8220;action&#8221;, &#8221;actionListener&#8221;, &#8220;validator&#8221;, or &#8220;valueChangeListener&#8221;, the - action described in <a target="_" - href="../../../javadocs/javax/faces/application/ViewHandler.html#retargetMethodExpressions(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent)">ViewHandler.retargetMethodExpressions()</a> + action described in ViewHandler.retargetMethodExpressions() must be taken to handle the attribute. In these cases, the - <code>method-signature</code> attribute, if present, + method-signature attribute, if present, must be ignored as its value is derived as described in - <code>retargetMethodExpressions()</code>.</div> + retargetMethodExpressions(). - + ]]> name true java.lang.String - + - <p>If this element has a <code>method-signature</code> +

If this element has a method-signature attribute, the - value of the <code>targets</code> attribute must be + value of the targets attribute must be interpreted as a space (not tab) separated list of client ids (relative to the - <em>top - level component</em>) of components within the - <code>&lt;composite:implementation&gt;</code> + top + level component) of components within the + &lt;composite:implementation&gt; section. Space is used as the delimiter for compatibility with the IDREFS and NMTOKENS data types from the XML Schema. Each entry in the list must be interpreted as the - id of an inner component to which the <code>MethodExpression</code> + id of an inner component to which the MethodExpression from - the <em>composite component tag</em> in the <em>using - page</em> must be - applied. If this element has a <code>method-signature</code> + the composite component tag in the using + page must be + applied. If this element has a method-signature attribute, - but no <code>targets</code> attribute, the value of + but no targets attribute, the value of the - <code>name</code> attribute is used as the single + name attribute is used as the single entry in the list. If - the value of the <code>name</code> attribute is <strong>not</strong> + the value of the name attribute is not one - of the special values listed in the description of the <code>name - attribute</code>, <code>targets</code> (or its + of the special values listed in the description of the name + attribute, targets (or its derived value) need not - correspond to the id of an inner component.</p> + correspond to the id of an inner component.

- </div> + -
+ ]]>
targets false java.lang.String
- + +

If this attribute is not required, and a value is not supplied by the page author, use this as - the default value.</p></div> + the default value.

-
+ ]]>
default false java.lang.String
- + +

The name to display in a tool palette containing this component. The value of this attribute will be set as - the value for this property on the <em>composite - component bean descriptor</em>.</p></div> + the value for this property on the composite + component bean descriptor.

-
+ ]]>
displayName false java.lang.String
- + +

True if the page author must supply a value + for this attribute.

-
+ ]]>
required false boolean
- + +

Is this a "preferred" component. The value of this attribute will be set as the value for this - property on the <em>composite component bean - descriptor</em>.</p></div> + property on the composite component bean + descriptor.

-
+ ]]>
preferred false boolean
- + +

Is this component only for expert users? The value of this attribute will be set as the value for - this property on the <em>composite component bean - descriptor</em>.</p></div> + this property on the composite component bean + descriptor.

-
+ ]]>
expert false boolean
- + +

A short description of the purpose of this component. The value of this attribute will be set as - the value for this property on the <em>composite - component bean descriptor</em>.</p></div> + the value for this property on the composite + component bean descriptor.

-
+ ]]>
shortDescription false java.lang.String
- + +

Declares that this attribute must be a MethodExpression whose method signature is described by the value of this attribute. The signature must be described using fully qualified class names @@ -981,733 +981,733 @@ "type" attribute. If both attributes are present, the "method-signature" - attribute is ignored.</p> + attribute is ignored.

- <p>PENDING: when this file is generated from the +

PENDING: when this file is generated from the web-facesuicomponent_2_0.xsd, we will not need to copy the content here - manually.</p> + manually.

- <p>Provides the signature of the Java method. The syntax +

Provides the signature of the Java method. The syntax of the method-signature element is as follows (taken from - function-signature in web-jsptaglibrary_2_1.xsd):</p> + function-signature in web-jsptaglibrary_2_1.xsd):

- <p>MethodSignature ::= ReturnType S MethodName S? - '(' S? Parameters? S? ')'</p> +

MethodSignature ::= ReturnType S MethodName S? + '(' S? Parameters? S? ')'

- <p>ReturnType ::= Type</p> +

ReturnType ::= Type

- <p>MethodName ::= Identifier</p> +

MethodName ::= Identifier

- <p>Parameters ::= Parameter - | ( Parameter S? ',' S? Parameters )</p> +

Parameters ::= Parameter + | ( Parameter S? ',' S? Parameters )

- <p>Parameter ::= Type</p> +

Parameter ::= Type

- <p>Where:</p> +

Where:

- <ul> +
    - <li><p>Type is a basic type or a fully qualified +
  • Type is a basic type or a fully qualified Java class name (including package name), as per the 'Type' production in the Java Language Specification, Second Edition, - Chapter 18.</p></li> + Chapter 18.

  • - <li><p>Identifier is a Java identifier, as per +
  • Identifier is a Java identifier, as per the 'Identifier' production in the Java Language Specification, Second - Edition, Chapter 18.</p></li> + Edition, Chapter 18.

  • - </ul> +
- <p>Example:</p> +

Example:

- <p><code>java.lang.String nickName( - java.lang.String, int )</code></p> +

java.lang.String nickName( + java.lang.String, int )

- </div> + -
+ ]]>
method-signature false java.lang.String
- + +

Declares that this attribute must be a ValueExpression whose expected type is given by the value of this attribute. If not specified, and no "method-signature" attribute is present, - <code>java.lang.Object</code> is assumed. This + java.lang.Object is assumed. This attribute is mutually exclusive with the "method-signature" attribute. If both attributes are present, the - "method-signature" attribute is ignored. </p> </div> + "method-signature" attribute is ignored.

-
+ ]]>
type false java.lang.String
- + - <p>Declares that this composite component supports a facet +

Declares that this composite component supports a facet with the - name given by the value of the "name" attribute. </p> + name given by the value of the "name" attribute.

- <p>Please see <code>&lt;<a - href="interface.html">composite:interface</a>&gt;</code> +

Please see &lt;composite:interface&gt; for a usage - example.</p> + example.

- </div> -
+ + ]]>
facet com.sun.faces.facelets.tag.composite.DeclareFacetHandler - + +

The name of the attribute as it must appear + on the composite component tag in the + using page.

-
+ ]]>
name true java.lang.String
- + +

The name to display in a tool palette containing this component. The value of this attribute will be set as - the value for this property on the <em>composite - component bean descriptor</em>.</p></div> + the value for this property on the composite + component bean descriptor.

-
+ ]]>
displayName false java.lang.String
- + +

True if the page author must supply a facet with this + name.

-
+ ]]>
required false boolean
- + +

Is this a "preferred" facet. The value of this attribute will be set as the value for this - property on the <em>composite component bean - descriptor</em>.</p></div> + property on the composite component bean + descriptor.

-
+ ]]>
preferred false boolean
- + +

Is this facet only for expert users? The value of this attribute will be set as the value for - this property on the <em>composite component bean - descriptor</em>.</p></div> + this property on the composite component bean + descriptor.

-
+ ]]>
expert false boolean
- + +

A short description of the purpose of this facet. The value of this attribute will be set as - the value for this property on the <em>composite - component bean descriptor</em>.</p></div> + the value for this property on the composite + component bean descriptor.

-
+ ]]>
shortDescription false java.lang.String
- + - <p>This element is used in the - <code>&lt;composite:implementation&gt;</code> +

This element is used in the + &lt;composite:implementation&gt; section. The facet with the name equal to the value of the name attribute, given by the page author in the using page, will be rendered at this point in the - composite component VDL view. </p> + composite component VDL view.

- <p>The implementation of this tag handler must insert a - component with <code>component-type</code> - <code>javax.faces.Output</code> and <code>renderer-type</code> - <code>javax.faces.CompositeFacet</code> as a - child at this point in the component tree.</p> +

The implementation of this tag handler must insert a + component with component-type + javax.faces.Output and renderer-type + javax.faces.CompositeFacet as a + child at this point in the component tree.

- <p>The implementation of this tag handler must store an +

The implementation of this tag handler must store an attribute into the created component's attribute map under the key given by the value - of the symbolic constant <code>UIComponent.FACETS_KEY</code>. + of the symbolic constant UIComponent.FACETS_KEY. The value - for this key must be the evaluated value of the "name" attribute.</p> + for this key must be the evaluated value of the "name" attribute.

- </div> -
+ + ]]>
renderFacet com.sun.faces.facelets.tag.composite.RenderFacetHandler - + +

The value of the name attribute as it must appear on an + &lt;f:facet&gt; tag nested + within the composite + component tag in the using page.

-
+ ]]>
name true java.lang.String
- + - <p>If <code>true</code>, and there is no such +

If true, and there is no such facet present on the top - level component, a <code>TagException</code> must be + level component, a TagException must be thrown, containing - the <code>Location</code>, the facet name, and a + the Location, the facet name, and a localized descriptive - error message.</p> + error message.

- </div> + -
+ ]]>
required false boolean
- + - <p>This element is used in the - <code>&lt;composite:implementation&gt;</code> +

This element is used in the + &lt;composite:implementation&gt; section. Any child components or template text within the composite component tag in the using page will be re-parented into the composite component at the point indicated by this tag's placement within the - <code>&lt;composite:implementation&gt;</code> + &lt;composite:implementation&gt; section. The normal use-case for this element is to have only one occurrence within the - <code>&lt;composite:implementation&gt;</code> + &lt;composite:implementation&gt; section. Inserting multiple occurrences may cause duplicate id errors. The results are undefined if there are multiple occurrences of this element in the - <code>&lt;composite:implementation&gt;</code> - section.</p> + &lt;composite:implementation&gt; + section.

- </div> -
+ + ]]>
insertChildren com.sun.faces.facelets.tag.composite.InsertChildrenHandler
- + +

Declares that the composite component whose contract is declared by the - <code>&lt;composite:interface&gt;</code> in + &lt;composite:interface&gt; in which this element is nested exposes an implementation of - <code>ValueHolder</code> suitable for use as the target + ValueHolder suitable for use as the target of - <em>attached objects</em> in <em>the using page</em>. + attached objects in the using page. Any attached objects suitable for implementations of - <code>ValueHolder</code> may be attached to the + ValueHolder may be attached to the composite - component. Consider this excerpt from <em>the using - page</em>: - </p> + component. Consider this excerpt from the using + page: +

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;ez:foo&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;f:converter <span class="kw3">for</span>=<span - class="st0">&quot;userid&quot;</span> binding=<span - class="st0">&quot;#{bean.converter}&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/ez:foo&gt;</span> - </div></li></ol></div></div> +
  1. &lt;ez:foo&gt;
  2. +
  3. &nbsp; &lt;f:converter for=&quot;userid&quot; binding=&quot;#{bean.converter}&quot; /&gt;
  4. +
  5. &lt;/ez:foo&gt; +
- <p>Line 2 refers to the - <code>&lt;composite:valueHolder&gt;</code> +

Line 2 refers to the + &lt;composite:valueHolder&gt; declaration on - line 2 of <code>foo.xhtml</code>:</p> + line 2 of foo.xhtml:

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:valueHolder <span class="kw3">name</span>=<span - class="st0">&quot;userid&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span - class="st0">&quot;userid&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:implementation&gt;</span> - </div></li></ol></div></div> +
  1. &lt;composite:interface&gt;
  2. +
  3. &nbsp; &lt;composite:valueHolder name=&quot;userid&quot; /&gt;
  4. +
  5. &lt;/composite:interface&gt;
  6. +
  7. &nbsp;
  8. +
  9. &lt;composite:implementation&gt;
  10. +
  11. &nbsp; &lt;h:inputText id=&quot;userid&quot; /&gt;
  12. +
  13. &lt;/composite:implementation&gt; +
- <p></p> +

- <p>It is possible to declare that a single - <code>&lt;composite:valueHolder&gt;</code> +

It is possible to declare that a single + &lt;composite:valueHolder&gt; element should cause multiple - components within the <code>&lt;composite:implementation&gt;</code> - section to be the targets of an <em>attached object</em> + components within the &lt;composite:implementation&gt; + section to be the targets of an attached object in the - using page. Assuming the same <em>using page</em> + using page. Assuming the same using page excerpt as - above, the revised <em>VDL view</em> is:</p> + above, the revised VDL view is:

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:valueHolder targets=<span - class="st0">&quot;userid,password&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:interface&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span - class="st0">&quot;userid&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span - class="st0">&quot;password&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2"><span class="sc2"><span - class="kw2">&lt;</span>/composite:implementation&gt;</span> - </div></li></ol></div></div> +
  1. &lt;composite:interface&gt;
  2. +
  3. &nbsp; &lt;composite:valueHolder targets=&quot;userid,password&quot; /&gt;
  4. +
  5. &lt;/composite:interface&gt;
  6. +
  7. &nbsp;
  8. +
  9. &lt;composite:implementation&gt;
  10. +
  11. &nbsp; &lt;h:inputText id=&quot;userid&quot; /&gt;
  12. +
  13. &nbsp; &lt;h:inputText id=&quot;password&quot; /&gt;
  14. +
  15. &lt;/composite:implementation&gt; +
- <p>In this case, the "targets" attribute on the - <code>&lt;composite:valueHolder&gt;</code> +

In this case, the "targets" attribute on the + &lt;composite:valueHolder&gt; element, on line 2 above, replaces the "name" attribute in the previous example. "targets" is a - list of ids of client ids (relative to the <em>top level - component</em>) - within the <code>&lt;composite:implementation&gt;</code> + list of ids of client ids (relative to the top level + component) + within the &lt;composite:implementation&gt; section. In - this case, "targets" refers to the <code>&lt;h:inputText&gt;</code> - components on lines 6 and 7 above.</p> + this case, "targets" refers to the &lt;h:inputText&gt; + components on lines 6 and 7 above.

- <p>Please see <code>&lt;<a - href="interface.html">composite:interface</a>&gt;</code> +

Please see &lt;composite:interface&gt; for a usage - example.</p> + example.

- </div> -
+ + ]]>
valueHolder com.sun.faces.facelets.tag.composite.ValueHolderAttachedObjectTargetHandler - + +

The value of this attribute maps back to the "for" attribute on an attachable object nested within a composite component. If the "targets" attribute is not specified, this value also represents the component ID of the target component within the - that the <code>&lt;composite:implementation&gt;</code> + that the &lt;composite:implementation&gt; ActionListener should be mapped to. - </p> - </div> +

+ -
+ ]]>
name true java.lang.String
- + +

If present, this must be a space (not tab) separated list of client - ids (relative to the <em>top level component</em>) + ids (relative to the top level component) of components within - the <code>&lt;composite:implementation&gt;</code> + the &lt;composite:implementation&gt; section. Space is used as the delimiter for compatibility with the IDREFS and NMTOKENS - data types from the XML Schema. </p></div> + data types from the XML Schema.

-
+ ]]>
targets false java.lang.String
- + +

Declares that the composite component whose contract is declared by the - <code>&lt;composite:interface&gt;</code> in + &lt;composite:interface&gt; in which this element is nested exposes an implementation of - <code>EditableValueHolder</code> suitable for use as the - target of <em>attached objects</em> in <em>the + EditableValueHolder suitable for use as the + target of attached objects in the using - page</em>. Any attached objects suitable for - implementations of <code>EditableValueHolder</code> may + page. Any attached objects suitable for + implementations of EditableValueHolder may be - attached to the composite component.The example from <a - href="valueHolder.html"><code>&lt;composite:valueHolder&gt;</code></a> + attached to the composite component.The example from &lt;composite:valueHolder&gt; still applies. - </p> +

- <p>Please see <code>&lt;<a - href="interface.html">composite:interface</a>&gt;</code> +

Please see &lt;composite:interface&gt; for a usage - example.</p> + example.

- </div> -
+ + ]]>
editableValueHolder com.sun.faces.facelets.tag.composite.EditableValueHolderAttachedObjectTargetHandler - + +

The value of this attribute maps back to the "for" attribute on an attachable object nested within a composite component. If the "targets" attribute is not specified, this value also represents the component ID of the target component within the - that the <code>&lt;composite:implementation&gt;</code> + that the &lt;composite:implementation&gt; ActionListener should be mapped to. - </p> - </div> +

+ -
+ ]]>
name true java.lang.String
- + +

If present, this must be a space (not tab) separated list of client - ids (relative to the <em>top level component</em>) + ids (relative to the top level component) of components within - the <code>&lt;composite:implementation&gt;</code> + the &lt;composite:implementation&gt; section. Space is used as the delimiter for compatibility with the IDREFS and NMTOKENS - data types from the XML Schema.</p></div> + data types from the XML Schema.

-
+ ]]>
targets false java.lang.String
- + +

Declares that the composite component whose contract is declared by the - <code>&lt;composite:interface&gt;</code> in + &lt;composite:interface&gt; in which this element is nested exposes an implementation of - <code>ActionSource2</code> suitable for use as the + ActionSource2 suitable for use as the target of - <em>attached objects</em> in <em>the using page</em>. + attached objects in the using page. Any attached objects suitable for implementations of - <code>ActionSource2</code> may be attached to the + ActionSource2 may be attached to the composite - component. Consider this excerpt from <em>the using - page</em>: - </p> + component. Consider this excerpt from the using + page: +

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;ez:loginPanel <span - class="kw3">id</span>=<span class="st0">&quot;loginPanel&quot;</span> - model=<span class="st0">&quot;#{bean}&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;f:valueChangeListener <span class="kw3">for</span>=<span - class="st0">&quot;username&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; +
  1. &lt;ez:loginPanel id=&quot;loginPanel&quot; + model=&quot;#{bean}&quot;&gt;
  2. +
  3. &nbsp; &lt;f:valueChangeListener for=&quot;username&quot;
  4. +
  5. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; - &nbsp; binding=<span class="st0">&quot;#{bean.useridValueChangeListener}&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span - class="st0">&quot;loginEvent&quot;</span> </div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; + &nbsp; binding=&quot;#{bean.useridValueChangeListener}&quot; + /&gt;
  6. +
  7. &nbsp; &lt;f:actionListener for=&quot;loginEvent&quot;
  8. +
  9. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.loginEventListener}&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span - class="st0">&quot;cancelEvent&quot;</span> </div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; + &nbsp; &nbsp; binding=&quot;#{bean.loginEventListener}&quot; + /&gt;
  10. +
  11. &nbsp;
  12. +
  13. &nbsp; &lt;f:actionListener for=&quot;cancelEvent&quot;
  14. +
  15. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.cancelEventListener}&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span - class="st0">&quot;allEvents&quot;</span> </div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; + &nbsp; &nbsp; binding=&quot;#{bean.cancelEventListener}&quot; + /&gt;
  16. +
  17. &nbsp;
  18. +
  19. &nbsp; &lt;f:actionListener for=&quot;allEvents&quot;
  20. +
  21. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.allEventsListener}&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/ez:loginPanel&gt;</span> - </div></li></ol></div></div> + &nbsp; &nbsp; binding=&quot;#{bean.allEventsListener}&quot; + /&gt;
  22. +
  23. &nbsp;
  24. +
  25. &lt;/ez:loginPanel&gt; +
- <p>The <code>&lt;f:actionListener&gt;</code> +

The &lt;f:actionListener&gt; elements on lines 4, 7, and 10 - refer to the <em>attached objects</em> declared on lines - 2, 3 and 4 below.</p> + refer to the attached objects declared on lines + 2, 3 and 4 below.

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc2">&lt;composite:interface - <span class="kw3">name</span>=<span class="st0">&quot;loginPanel&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;loginEvent&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;cancelEvent&quot;</span> /<span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span - class="st0">&quot;allEvents&quot;</span> targets=<span - class="st0">&quot;loginEvent cancelEvent&quot;</span> - /<span class="kw2">&gt;</span></span></div></li> - <li class="li1"><div class="de1"><span class="sc2"><span - class="kw2">&lt;</span>/composite:interface&gt;</span> - </div></li></ol></div></div> +
  1. &lt;composite:interface + name=&quot;loginPanel&quot;&gt;
  2. +
  3. &nbsp; &lt;composite:actionSource name=&quot;loginEvent&quot; /&gt;
  4. +
  5. &nbsp; &lt;composite:actionSource name=&quot;cancelEvent&quot; /&gt;
  6. +
  7. &nbsp; &lt;composite:actionSource name=&quot;allEvents&quot; targets=&quot;loginEvent cancelEvent&quot; + /&gt;
  8. +
  9. &lt;/composite:interface&gt; +
- <p>Most of the concepts from example content from <a - href="valueHolder.html"><code>&lt;composite:valueHolder&gt;</code></a> +

Most of the concepts from example content from &lt;composite:valueHolder&gt; also applies in the case of - <code>&lt;composite:actionSource&gt;</code>.</p> + &lt;composite:actionSource&gt;.

- <p>Please see <code>&lt;<a - href="interface.html">composite:interface</a>&gt;</code> +

Please see &lt;composite:interface&gt; for a usage - example.</p> + example.

- </div> -
+ + ]]>
actionSource com.sun.faces.facelets.tag.composite.ActionSource2AttachedObjectTargetHandler - + +

The value of this attribute maps back to the "for" attribute on an attachable object nested within a composite component. If the "targets" attribute is not specified, this value also represents the component ID of the target component within the - that the <code>&lt;composite:implementation&gt;</code> + that the &lt;composite:implementation&gt; ActionListener should be mapped to. - </p> - </div> +

+ -
+ ]]>
name true java.lang.String
- + +

If present, this must be a space (not tab) separated list of client - ids (relative to the <em>top level component</em>) + ids (relative to the top level component) of components within - the <code>&lt;composite:implementation&gt;</code> + the &lt;composite:implementation&gt; section. Space is used as the delimiter for compatibility with the IDREFS and NMTOKENS - data types from the XML Schema.</p></div> + data types from the XML Schema.

-
+ ]]>
targets false java.lang.String
- + +

Used within a &lt;composite:interface&gt; section, within any sub-element of that section, to include XML content not defined by this specification. This element can be used to incorporate - <a target="_" href="http://jcp.org/en/jsr/detail?id=276">JSR-276</a> - metadata into a composite component.</p> + JSR-276 + metadata into a composite component.

- </div> -
+ + ]]>
extension com.sun.faces.facelets.tag.composite.ExtensionHandler
- + - <p>The presence of this tag in a - <code>&lt;composite:implementation&gt;</code> +

The presence of this tag in a + &lt;composite:implementation&gt; section must cause the - named facet to be taken from the facet map of the <em>top + named facet to be taken from the facet map of the top level - component</em> and inserted as a facet child of the component + component and inserted as a facet child of the component in which - this element is nested.</p> + this element is nested.

- </div> + -
+ ]]>
insertFacet com.sun.faces.facelets.tag.composite.InsertFacetHandler - + - <p>The name of the facet child on the <em>top level - component</em> which +

The name of the facet child on the top level + component which must be inserted as a facet child of the component in which this element - is nested.</p> + is nested.

- </div> + -
+ ]]>
name true java.lang.String
- + - <p>If <code>true</code>, and there is no such +

If true, and there is no such facet present on the top - level component, a <code>TagException</code> must be + level component, a TagException must be thrown, containing - the <code>Location</code>, the facet name, and a + the Location, the facet name, and a localized descriptive - error message.</p> + error message.

- </div> + -
+ ]]>
required false boolean Index: jsf-ri/conf/share/html_basic.taglib.xml =================================================================== --- jsf-ri/conf/share/html_basic.taglib.xml (revision 8717) +++ jsf-ri/conf/share/html_basic.taglib.xml (working copy) @@ -45,11 +45,11 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0"> - + + ]]> http://java.sun.com/jsf/html Index: jsf-ri/conf/share/ui.taglib.xml =================================================================== --- jsf-ri/conf/share/ui.taglib.xml (revision 8717) +++ jsf-ri/conf/share/ui.taglib.xml (working copy) @@ -45,368 +45,366 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0"> - + - <div class="changed_added_2_0"> - - <p>The tags in this library add templating&#8212;a powerful +

The tags in this library add templating&#8212;a powerful view composition technique&#8212;to JSF. Templating is so useful that there are entire frameworks, such as Tiles and SiteMesh, that are built around the concept of templating. So what is templating, how can you benefit from it, and how does this tag library implement it? - </p> +

- <p>If you've used JSP before, you've probably used <code>jsp:include</code>. +

If you've used JSP before, you've probably used jsp:include. The prototypical example for - <code>jsp:include</code> is a header on each page in a web + jsp:include is a header on each page in a web application. One JSP page, say header.jsp, encapsulates the header content, and the header is included by each - page. You <em>encapsulate and reuse - content</em>, so that changes to one file, header.jsp, affect the + page. You encapsulate and reuse + content, so that changes to one file, header.jsp, affect the header on every page. - </p> +

- <p>This tab library contains a tag&#8212<code>ui:include</code>&#8212 - that's analagous to <code>jsp:include</code>, +

This tab library contains a tag&#8212ui:include&#8212 + that's analagous to jsp:include, but encapsulating and reusing content is only half the templating story, because templating also lets you - <em>encapsulate and reuse <b>layout</b></em>. - You define a single <em>template</em> (meaning layout), and + encapsulate and reuse layout. + You define a single template (meaning layout), and you reuse - that template with multiple <em>compositions</em>. So now + that template with multiple compositions. So now you can control the layout of many pages with a single template (layout). Let's take a look at an example. - </p> +

- <h3>A Templating Example</h3> +

A Templating Example

- <p> +

First, we define a template: - </p> - <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC - &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li> +

+
  1. &lt;!DOCTYPE html PUBLIC + &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
  2. - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; &nbsp; &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2"><span class="sc3"><span - class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span - class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - &nbsp; &nbsp; &nbsp; xmlns:<span class="re0">ui</span>=<span - class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span></div></li> +
  3. &nbsp; &nbsp; &nbsp; + &nbsp; &nbsp; &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
  4. +
  5. &nbsp;
  6. +
  7. &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
  8. +
  9. &nbsp; &nbsp; &nbsp; + &nbsp; &nbsp; &nbsp; xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;
  10. - <li class="li1"><div class="de1">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;head<span class="re2">&gt;</span></span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;link</span> - <span class="re0">href</span>=<span class="st0">&quot;styles.css&quot;</span> - <span class="re0">rel</span>=<span class="st0">&quot;stylesheet&quot;</span> - <span class="re0">type</span>=<span class="st0">&quot;text/css&quot;</span><span - class="re2">/&gt;</span></span></div></li> +
  11. &nbsp; &nbsp; &lt;head&gt;
  12. +
  13. &nbsp; &nbsp; &nbsp; + &lt;link + href=&quot;styles.css&quot; + rel=&quot;stylesheet&quot; + type=&quot;text/css&quot;/&gt;
  14. - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;title<span - class="re2">&gt;</span></span></span><span - class="sc3"><span class="re1">&lt;ui</span>:insert - <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span - class="re2">&gt;</span></span>Default Title<span - class="sc3"><span class="re1">&lt;/ui</span>:insert<span - class="re2">&gt;</span></span><span class="sc3"><span - class="re1">&lt;/title<span class="re2">&gt;</span></span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;/head<span class="re2">&gt;</span></span></span></div></li> +
  15. &nbsp; &nbsp; &nbsp; + &lt;title&gt;&lt;ui:insert + name=&quot;title&quot;&gt;Default Title&lt;/ui:insert&gt;&lt;/title&gt;
  16. +
  17. &nbsp; &nbsp; &lt;/head&gt;
  18. - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:debug<span - class="re2">/&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;div</span> - <span class="re0">class</span>=<span class="st0">&quot;heading&quot;</span><span - class="re2">&gt;</span></span></div></li> +
  19. &nbsp;
  20. +
  21. &nbsp; &nbsp; &lt;body&gt;
  22. +
  23. &nbsp; &nbsp; &nbsp; + &lt;ui:debug/&gt;
  24. +
  25. &nbsp; &nbsp; &nbsp; + &lt;div + class=&quot;heading&quot;&gt;
  26. - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:insert - <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span - class="re2">/&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;/div<span - class="re2">&gt;</span></span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> +
  27. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;ui:insert + name=&quot;heading&quot;/&gt;
  28. +
  29. &nbsp; &nbsp; &nbsp; + &lt;/div&gt;
  30. +
  31. &nbsp;
  32. - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;div</span> - <span class="re0">class</span>=<span class="st0">&quot;content&quot;</span><span - class="re2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:insert - <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span - class="re2">/&gt;</span></span></div></li> +
  33. &nbsp; &nbsp; &nbsp; + &lt;div + class=&quot;content&quot;&gt;
  34. +
  35. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;ui:insert + name=&quot;content&quot;/&gt;
  36. - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;/div<span - class="re2">&gt;</span></span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li> - <li class="li2"><div class="de2"><span class="sc3"><span - class="re1">&lt;/html<span class="re2">&gt;</span></span></span> - </div></li></ol></div></div> +
  37. &nbsp; &nbsp; &nbsp; + &lt;/div&gt;
  38. +
  39. &nbsp; &nbsp; &lt;/body&gt;
  40. +
  41. &lt;/html&gt; +
- <p> +

In the preceeding listing, we've defined a layout, also known as a template. That template uses the - <code>ui:insert</code> tag to insert pieces of a page &#8212namely, + ui:insert tag to insert pieces of a page &#8212namely, title, heading, and content&#8212 - defined in a <em>composition</em>. Notice that on line 8, we + defined in a composition. Notice that on line 8, we define a default title, in case one isn't provided - by the composition. Also note that on line 12 we have the <code>ui:debug</code> + by the composition. Also note that on line 12 we have the ui:debug tag, which lets the user activate a popup window with debugging information by typing CTRL + Shift + d. - </p> +

- <p> +

The title, heading, and content pieces of the page referenced in the template are defined in a separate XHTML file in a composition, like this: - </p> +

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC - &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li> +
  1. &lt;!DOCTYPE html PUBLIC + &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
  2. - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2"><span class="sc3"><span - class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span - class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp;xmlns:<span - class="re0">ui</span>=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span><span - class="re2">&gt;</span></span></div></li> +
  3. &nbsp; &nbsp; &nbsp; + &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
  4. +
  5. &nbsp;
  6. +
  7. &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
  8. +
  9. &nbsp; &nbsp;xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&gt;
  10. - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;ui</span>:composition - <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span - class="re2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span - class="re2">&gt;</span></span>A List of Contacts<span - class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> +
  11. &nbsp;
  12. +
  13. &nbsp; &lt;body&gt;
  14. +
  15. &nbsp; &nbsp; &lt;ui:composition + template=&quot;/layout.xhtml&quot;&gt;
  16. +
  17. &nbsp;
  18. +
  19. &nbsp; &nbsp; &nbsp; + &lt;ui:define + name=&quot;title&quot;&gt;A List of Contacts&lt;/ui:define&gt;
  20. - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span - class="re2">&gt;</span></span>Contacts<span - class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span - class="re2">&gt;</span></span></div></li> +
  21. &nbsp; &nbsp; &nbsp; + &lt;ui:define + name=&quot;heading&quot;&gt;Contacts&lt;/ui:define&gt;
  22. +
  23. &nbsp;
  24. +
  25. &nbsp; &nbsp; &nbsp; + &lt;ui:define + name=&quot;content&quot;&gt;
  26. - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include - <span class="re0">src</span>=<span class="st0">&quot;contactsTable.xhtml&quot;</span> - <span class="re2">/&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> +
  27. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;ui:include + src=&quot;contactsTable.xhtml&quot; + /&gt;
  28. +
  29. &nbsp; &nbsp; &nbsp; + &lt;/ui:define&gt;
  30. - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; &nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;/ui</span>:composition<span - class="re2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li> - <li class="li1"><div class="de1"><span class="sc3"><span - class="re1">&lt;/html<span class="re2">&gt;</span></span></span> - </div></li></ol></div></div> +
  31. &nbsp; &nbsp; &nbsp; + &nbsp; &nbsp;
  32. +
  33. &nbsp; &nbsp; &lt;/ui:composition&gt;
  34. +
  35. &nbsp; &lt;/body&gt;
  36. +
  37. &lt;/html&gt; +
- <p> +

At runtime, JSF synthesizes the two previous XHTML pages to create a single JSF view by inserting the pieces defined in the composition into the template (that template is layout.xhtml, which is the first - listing above). JSF also disregards everything outside of the <code>composition</code> + listing above). JSF also disregards everything outside of the composition tag so that we don't - wind up with two <code>body</code> elements in the view. - Also, note that we use the <code>ui:include</code> + wind up with two body elements in the view. + Also, note that we use the ui:include tag on line 14 to include content (which happens to be a table) from another XHTML page, so that we can reuse that table in other views. - </p> +

- <p> +

So why do we have two XHTML pages to define a single view? Why not simply take the pieces and manually insert them into the layout so that we have only a single XHTML page? The answer is simple: we have separated layout - from the content so that we can <em>reuse that layout</em> + from the content so that we can reuse that layout among multiple compositions. For example, now we can define another composition that uses the same layout: - </p> +

- <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC - &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li> +
  1. &lt;!DOCTYPE html PUBLIC + &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
  2. - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2"><span class="sc3"><span - class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span - class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - xmlns:<span class="re0">ui</span>=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span><span - class="re2">&gt;</span></span></div></li> +
  3. &nbsp; &nbsp; &nbsp; + &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
  4. +
  5. &nbsp;
  6. +
  7. &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
  8. +
  9. &nbsp; &nbsp; &nbsp; + xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&gt;
  10. - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;ui</span>:composition - <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span - class="re2">&gt;</span></span></div></li> +
  11. &nbsp;
  12. +
  13. &nbsp; &lt;body&gt;
  14. +
  15. &nbsp; &nbsp; &lt;ui:composition + template=&quot;/layout.xhtml&quot;&gt;
  16. - <li class="li2"><div class="de2">&nbsp;</div></li> +
  17. &nbsp;
  18. - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span - class="re2">&gt;</span></span>Create a Contact<span - class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> +
  19. &nbsp; &nbsp; &nbsp; + &lt;ui:define + name=&quot;title&quot;&gt;Create a Contact&lt;/ui:define&gt;
  20. - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span - class="re2">&gt;</span></span>Create Contact&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> +
  21. &nbsp; &nbsp; &nbsp; + &lt;ui:define + name=&quot;heading&quot;&gt;Create Contact&lt;/ui:define&gt;
  22. - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span - class="re2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include - <span class="re0">src</span>=<span class="st0">&quot;createContactForm.xhtml&quot;</span><span - class="re2">/&gt;</span></span></div></li> +
  23. &nbsp;
  24. +
  25. &nbsp; &nbsp; &nbsp; + &lt;ui:define + name=&quot;content&quot;&gt;
  26. +
  27. &nbsp; &nbsp; &nbsp; + &nbsp; &lt;ui:include + src=&quot;createContactForm.xhtml&quot;/&gt;
  28. - <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> +
  29. &nbsp; &nbsp; &nbsp; + &lt;/ui:define&gt;
  30. - <li class="li2"><div class="de2">&nbsp;</div></li> +
  31. &nbsp;
  32. - <li class="li2"><div class="de2">&nbsp; &nbsp; <span - class="sc3"><span class="re1">&lt;/ui</span>:composition<span - class="re2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li> - <li class="li2"><div class="de2"><span class="sc3"><span - class="re1">&lt;/html<span class="re2">&gt;</span></span></span> - </div></li></ol></div></div> +
  33. &nbsp; &nbsp; &lt;/ui:composition&gt;
  34. +
  35. &nbsp; &lt;/body&gt;
  36. +
  37. &lt;/html&gt; +
- <p> +

By encapsulating the layout, we can reuse that layout among multiple compositions. Just like - <code>ui:include</code> lets us encapsulate and reuse + ui:include lets us encapsulate and reuse conent, JSF compositions let us encapsulate and reuse layout, so that changes to a single layout can affect multiple views. Fundamentally, that's what this tag library is all about. - </p> +

- </div> - <pre> + +
 
-    
+    ]]>
     http://java.sun.com/jsf/facelets
     
-        
+        
+            

+ This tag is the same as the ui:composition, except for two things: JSF creates a component and adds it directly to the tree, and there's no associated template. - </p> +

- <p> +

Use this tag to create a component and specify a filename for the - component as either the source of a <code>ui:include</code>, + component as either the source of a ui:include, or the source of a Facelets tag. - </p> - </div> +

+ -
+ ]]>
component com.sun.faces.facelets.tag.ui.ComponentRefHandler - + +

The identifier of the component that JSF inserts into the component tree. If an identifier is not explicitly specified by the page author, JSF will assign an identifier based on the algorithm that it uses for all components. - </p> - </div> +

+ -
+ ]]>
id false java.lang.String
- + +

Binds the component to a backing bean property, as specified in the JSF specification. - </p> - </div> +

+ -
+ ]]>
binding false java.lang.String
- + +

Defines a composition that optionally uses a template, as outlined in the description of the ui tag library. Multiple compositions can use the same template, thus encapsulating and @@ -414,107 +412,107 @@ composition, which lets developers embed compositions in well-formed XHTML pages that can be viewed in an XHTML viewer, such as Dreamweaver or a browser, without including extraneous - elements such as <code>head</code> and <code>body</code>. - </p> - <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC - &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li> + elements such as head and body. +

+
  1. &lt;!DOCTYPE html PUBLIC + &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
  2. - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2"><span class="sc3"><span - class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span - class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp;xmlns:<span - class="re0">ui</span>=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span><span - class="re2">&gt;</span></span></div></li> +
  3. &nbsp; &nbsp; + &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
  4. +
  5. &nbsp;
  6. +
  7. &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
  8. +
  9. &nbsp; &nbsp;xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&gt;
  10. - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; <span - class="sc3"><span class="re1">&lt;body<span - class="re2">&gt;</span></span></span></div></li> - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - THIS LINE, AND EVERYTHING ABOVE IT IS DISREGARDED BY JSF</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;ui</span>:composition - <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span - class="re2">&gt;</span></span></div></li> +
  11. &nbsp;
  12. +
  13. &nbsp; &lt;body&gt;
  14. +
  15. &nbsp;
  16. +
  17. &nbsp; &nbsp; + THIS LINE, AND EVERYTHING ABOVE IT IS DISREGARDED BY JSF
  18. +
  19. &nbsp; &nbsp; + &lt;ui:composition + template=&quot;/layout.xhtml&quot;&gt;
  20. - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span - class="re2">&gt;</span></span>#{msgs.contactsWindowTitle}<span - class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span - class="re2">&gt;</span></span>#{msgs.contactsHeading}<span - class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> +
  21. &nbsp;
  22. +
  23. &nbsp; &nbsp; + &nbsp; &lt;ui:define + name=&quot;title&quot;&gt;#{msgs.contactsWindowTitle}&lt;/ui:define&gt;
  24. +
  25. &nbsp; &nbsp; + &nbsp; &lt;ui:define + name=&quot;heading&quot;&gt;#{msgs.contactsHeading}&lt;/ui:define&gt;
  26. - <li class="li2"><div class="de2">&nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define - <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span - class="re2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include - <span class="re0">src</span>=<span class="st0">&quot;contactsTable.xhtml&quot;</span> - <span class="re2">/&gt;</span></span></div></li> +
  27. &nbsp;
  28. +
  29. &nbsp; &nbsp; + &nbsp; &lt;ui:define + name=&quot;content&quot;&gt;
  30. +
  31. &nbsp; &nbsp; + &nbsp; &nbsp; &lt;ui:include + src=&quot;contactsTable.xhtml&quot; + /&gt;
  32. - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; <span class="sc3"><span class="re1">&lt;/ui</span>:define<span - class="re2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - &nbsp; &nbsp; &nbsp;</div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - <span class="sc3"><span class="re1">&lt;/ui</span>:composition<span - class="re2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; &nbsp; - THIS LINE, AND EVERYTHING BELOW IT IS DISREGARDED BY JSF</div></li> +
  33. &nbsp; &nbsp; + &nbsp; &lt;/ui:define&gt;
  34. +
  35. &nbsp; &nbsp; + &nbsp; &nbsp; &nbsp;
  36. +
  37. &nbsp; &nbsp; + &lt;/ui:composition&gt;
  38. +
  39. &nbsp; &nbsp; + THIS LINE, AND EVERYTHING BELOW IT IS DISREGARDED BY JSF
  40. - <li class="li1"><div class="de1">&nbsp;</div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc3"><span class="re1">&lt;/body<span - class="re2">&gt;</span></span></span></div></li> - <li class="li1"><div class="de1"><span class="sc3"><span - class="re1">&lt;/html<span class="re2">&gt;</span></span></span> - </div></li></ol></div></div> +
  41. &nbsp;
  42. +
  43. &nbsp; &lt;/body&gt;
  44. +
  45. &lt;/html&gt; +
- </div> + -
+ ]]>
composition com.sun.faces.facelets.tag.ui.CompositionHandler - + +

A URI that points to a template, also known as a layout, that inserts pieces of the page defined in the composition. - </p> - </div> +

+ -
+ ]]>
template false java.lang.String
- + +

+ When the ui:debug tag is placed in an XHTML page, it creates a component and adds it to the component tree. That debug component captures debugging information, namely the current state of the component @@ -522,509 +520,509 @@ is rendered. If the user presses CTRL + SHIFT + d, JSF opens a window that shows the debugging information captured by the debug component. - </p> +

- <p> - Typically, the best place to put the <code>ui:debug</code> +

+ Typically, the best place to put the ui:debug tag is in an application's main template, which lets developers enable or disable viewing of debugging information in one central location. Additionally, page authors can change the hotkey (which by default is CTRL + SHIFT + d, where the d stands for debug) to CTRL + SHIFT + ?, - where ? represents the key specified as the value of the <code>hotkey</code> + where ? represents the key specified as the value of the hotkey attribute. - </p> +

- <p> - You can use the <code>rendered</code> attribute to +

+ You can use the rendered attribute to control whether the debug component is rendered. - Using an EL expression as the value for the <code>rendered</code> + Using an EL expression as the value for the rendered attribute lets you control whether debug output is enabled for multiple views based on a single bean property. - </p> - </div> +

+ -
+ ]]>
debug com.sun.faces.facelets.tag.ui.UIDebug - + +

Defines a single character, that, pressed in conjunction with CTRL and SHIFT, will display the JSF debug window. - By default, the hotkey is 'd'. <em>The value for the - hotkey attribute cannot be an EL expression.</em> - </p> + By default, the hotkey is 'd'. The value for the + hotkey attribute cannot be an EL expression. +

- </div> + -
+ ]]>
hotkey false java.lang.String
- + +

Controls whether the debug component is rendered. Valid values for this attribute are either the strings "true" or "false" or - an EL expression that evaluates to either "true" or "false".<p>If + an EL expression that evaluates to either "true" or "false".

If this attribute's value is "false" or the value is an EL expression that evaluates to "false", the debug component is not rendered in the page, the hotkey attribute is disregarded, and users cannot open the debugging information window with a - hotkey.</p> - </p> + hotkey.

+

- </div> + -
+ ]]>
rendered false java.lang.String
- + - <p>The <code>define</code> tag defines content - that is inserted into a page by a template. The <code>define</code> - tag can be used inside <code>ui:composition</code>, <code>ui:component</code>, - <code>ui:decorate</code>, and <code>ui:fragment</code> - tags.</p> +

The define tag defines content + that is inserted into a page by a template. The define + tag can be used inside ui:composition, ui:component, + ui:decorate, and ui:fragment + tags.

- <p>Content defined by the <code>define</code> tag - can be inserted into a page by using <code>ui:insert</code>. - </p> +

Content defined by the define tag + can be inserted into a page by using ui:insert. +

- </div> + -
+ ]]>
define com.sun.faces.facelets.tag.ui.DefineHandler - + - <p>Assigns a name to the content inside a <code>define</code> - tag. That name is used by corresponding <code>ui:insert</code> - tags in a template that insert the named content into a page.</p> - </div> +

Assigns a name to the content inside a define + tag. That name is used by corresponding ui:insert + tags in a template that insert the named content into a page.

+ -
+ ]]>
name true java.lang.String
- + - <p> - The <code>decorate</code> tag is identical to the <code>composition</code> - tag, except that <code>ui:decorate</code>, unlike <code>ui:composition</code>, - does not disregard all content outside of the tag. The <code>decorate</code> +

+ The decorate tag is identical to the composition + tag, except that ui:decorate, unlike ui:composition, + does not disregard all content outside of the tag. The decorate is useful when you want to decorate some content in a page, for example, you might want to decorate a list of items, like this: - <div class="syntax"><div class="html4strict" - style="font-family: monospace;"><ol><li class="li1"><div - class="de1"> +

  1. - <span class="sc2">&lt;ui:decorate template=<span - class="st0">&quot;/layout.xhtml&quot;</span><span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;ui:define <span class="kw3">name</span>=<span - class="st0">&quot;listHeading&quot;</span><span - class="kw2">&gt;</span></span></div></li> + &lt;ui:decorate template=&quot;/layout.xhtml&quot;&gt;
  2. +
  3. &nbsp; &lt;ui:define name=&quot;listHeading&quot;&gt;
  4. - <li class="li1"><div class="de1">&nbsp; &nbsp; - <span class="sc2">&lt;ui:include <span class="kw3">src</span>="shared/listHeading.xhtml"/<span - class="kw2">&gt;</span></span></div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp; &nbsp; - &nbsp; &nbsp; </div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2">&lt;c:forEach items="#<span class="br0">&#123;</span>items<span - class="br0">&#125;"</span> var="item"<span - class="kw2">&gt;</span></span></div></li> +
  5. &nbsp; &nbsp; + &lt;ui:include src="shared/listHeading.xhtml"/&gt;
  6. +
  7. &nbsp; &lt;/ui:define&gt;
  8. +
  9. &nbsp; &nbsp; + &nbsp; &nbsp;
  10. +
  11. &nbsp; &lt;c:forEach items="#&#123;items&#125;" var="item"&gt;
  12. - <li class="li1"><div class="de1">&nbsp; &nbsp; - ...</div></li> - <li class="li2"><div class="de2">&nbsp; <span - class="sc2"><span class="kw2">&lt;</span>/c:forEach&gt;</span></div></li> - <li class="li1"><div class="de1">&nbsp; ...</div></li> - <li class="li2"><div class="de2"><span class="sc2"><span - class="kw2">&lt;</span>/ui:decorate&gt;</span> - </div></li></ol></div></div> - </p> +
  13. &nbsp; &nbsp; + ...
  14. +
  15. &nbsp; &lt;/c:forEach&gt;
  16. +
  17. &nbsp; ...
  18. +
  19. &lt;/ui:decorate&gt; +
+

- Because JSF does not disregard everything outside of the <code>ui:decorate</code> - tag, <code>ui:decorate</code> can + Because JSF does not disregard everything outside of the ui:decorate + tag, ui:decorate can be used to decorate pieces of a page. - </div> + -
+ ]]>
decorate com.sun.faces.facelets.tag.ui.DecorateHandler - + A URI that points to a template, also known as a layout, that inserts pieces of the page defined in the decorator. - </div> + - + ]]> template false java.lang.String
- + +

The fragment tag is identical to + the component tag, except that ui:fragment, + unlike ui:component, JSF does not disregard + all content outside of the tag.

+ -
+ ]]>
fragment com.sun.faces.facelets.tag.ui.ComponentRefHandler - + The identifier of the component that JSF inserts into the component tree. If an identifier is not explicitly specified by the page author, JSF will assign an identifier based on the algorithm that it uses for all components. - </div> + - + ]]> id false java.lang.String - + Binds the component to a backing bean property, as specified in the JSF specification. - </div> + - + ]]> binding false java.lang.String
- + +

Use this tag&#8212which is very similar to JSP's jsp:include&#8212to encapsulate and reuse content among multiple XHTML pages. There are three things this tag can include: - plain XHTML, and XHTML pages that have either a <code>composition</code> - tag or a <code>component</code> tag. - </p> - <p>You supply a filename, through <code>ui:include</code>'s - <code>src</code> attribute for JSF to include. That + plain XHTML, and XHTML pages that have either a composition + tag or a component tag. +

+

You supply a filename, through ui:include's + src attribute for JSF to include. That filename is relative to the XHTML file that was rendered as a result of the last request. So, for example, if JSF loaded - the view <code>login.xhtml</code>, and that file - included <code>pageDecorations/header.xhtml</code>, and - <code> - pageDecorations/header.xhtml</code> included <code>companyLogo.xhtml</code>, - then <code>companyLogo.xhtml</code> will - not be found if it's in the <code>pageDecorations</code> - directory, because <code>companyLogo.xhtml</code> has to + the view login.xhtml, and that file + included pageDecorations/header.xhtml, and + + pageDecorations/header.xhtml included companyLogo.xhtml, + then companyLogo.xhtml will + not be found if it's in the pageDecorations + directory, because companyLogo.xhtml has to be - in the same directory as <code>login.xhtml</code>. - </p> + in the same directory as login.xhtml. +

- </div> + -
+ ]]>
include com.sun.faces.facelets.tag.ui.IncludeHandler - + The filename of an XHTML page to include. The filename is relative to the XHTML page that was originally loaded. - </div> + - + ]]> src true java.lang.String
- + +

Inserts content into a template. That content is defined&#8212with + the ui:define tag&#8212 in either a + ui:composition, ui:component, + ui:decorate, or ui:fragment.

+ -
+ ]]>
insert com.sun.faces.facelets.tag.ui.IncludeHandler - + The optional name attribute matches the associated &lt;ui:define/&gt; tag in this template's client. If no name is specified, it's expected that the whole template client will be inserted. - </div> + - + ]]> name false java.lang.String
- + +

Use this tag to pass parameters to an included file (using + ui:include), or a template + (linked to either a composition or decorator). Embed ui:param + tags in either ui:include, + ui:composition, or ui:decorate to pass the parameters. - </div> + - + ]]> param com.sun.faces.facelets.tag.ui.ParamHandler - + The name of the parameter. - </div> + - + ]]> name true java.lang.String - + The value of the parameter. Notice that this attribute's value can be an EL expression, which means that you can pass objects to either an included file or a template. - </div> - + + ]]> value true java.lang.String - + - <p>Use this tag as an alternative to <code>h:dataTable</code> +

Use this tag as an alternative to h:dataTable or - <code>c:forEach</code>, especially when you are using + c:forEach, especially when you are using the - <code>jsfc</code> feature of Facelets. You can specify + jsfc feature of Facelets. You can specify this component as - the value of the <code>jsfc</code> attribute, like this: + the value of the jsfc attribute, like this: &lt;div... jsfc="ui:repeat" value="#{contacts}" var="contact"&gt;... - </p> - </div> +

+ -
+ ]]>
repeat com.sun.faces.facelets.tag.ui.RepeatHandler - + - <p>Read-write property setting the offset from the +

Read-write property setting the offset from the beginning of the collection from which to start the iteration. If not set, this offset is not considered and iteration will start at the beginning of the - collection.</p> + collection.

- </div> + -
+ ]]>
offset false int
- + - <p>Read-write property setting the size of the collection +

Read-write property setting the size of the collection to iterate. If this value is less than the actual size of the collection, a - <code>FacesException</code> must be thrown.</p> + FacesException must be thrown.

- </div> + -
+ ]]>
size false int
- +

Iteration will only process every step items of the collection, - starting with the first one.</p></div> + starting with the first one.

-
+ ]]>
step false int
- + - <p>The name of a collection of items that this tag +

The name of a collection of items that this tag iterates over. The - collection may be a <code>List</code>, <code>array</code>, - <code>java.sql.ResultSet</code>, or an individual + collection may be a List, array, + java.sql.ResultSet, or an individual java Object. If the - collection is null, this tag does nothing.</p> + collection is null, this tag does nothing.

- </div> + -
+ ]]>
value true java.lang.Object
- +

Name of the exported scoped variable for the current item of the iteration. This scoped variable has nested visibility. Its type depends on the object of the - underlying collection</p></div> + underlying collection

-
+ ]]>
var true java.lang.Object
- +

Name of the exported request scoped variable for the status of the iteration. Object is a POJO with the following read-only JavaBeans properties. This scoped variable has nested - visibility.</p> + visibility.

- <p><code>begin</code> of type Integer</p> +

begin of type Integer

- <p><code>end</code> of type Integer</p> +

end of type Integer

- <p><code>index</code> of type int</p> +

index of type int

- <p><code>step</code> of type Integer</p> +

step of type Integer

- <p><code>even</code> of type boolean</p> +

even of type boolean

- <p><code>odd</code> of type boolean</p> +

odd of type boolean

- <p><code>first</code> of type boolean</p> +

first of type boolean

- <p><code>last</code> of type boolean</p> +

last of type boolean

- </div> + -
+ ]]>
varStatus false java.lang.Object
- + +

Remove content from a page. This tag is often used in + conjunction with the jsfc feature of Facelets, to wrap additional markup. When Facelets removes markup from a page by substituting markup items that have - a <code>jsfc</code> attribute with the specified + a jsfc attribute with the specified component, Facelets also removes anything in the page that - is contained in a <code>ui:remove</code> tag.</p> - </div> + is contained in a ui:remove tag.

+ -
+ ]]>
remove com.sun.faces.facelets.tag.ui.SchemaCompliantRemoveHandler