Render the markup for a <script> element that
renders the script Resource specified by the optional
name attribute and library attributes.
The implementation of this renderer must have a @ListenerFor
annotation attached to it, at the class level, declaring PostAddToViewEvent.class
as the value of the systemEventClass attribute. The presence of
this annotation on a renderer implies the renderer implements ComponentSystemEventListener,
which this renderer must do. The implementation of
processEvent() must extract the UIComponent
from the argument event and look for the presence of the key
"target" in the component's attribute Map. If
and only if such a key is present, the implementation of
processEvent() must pass the component to UIViewRoot.addComponentResource().
Decode Behavior
No action is required during decode for this renderer.
Encode Behavior
Common Algorithm for Obtaining A Resource to Render
This algorithm is used by all resource renderers to obtain
a Resource instance which is then rendered in a
specific way depending on what kind of renderer is doing the
encoding.
Look in the component attribute Map for a
value under the key name.
Look in the component attribute Map for a
value under the key library. This attribute is
optional, therefore, library may be
null.
Create the resource by calling
Application.getResourceHandler.createResource(name,
library);.
This algorithm is used by all resource renderers to render the resource.
encodeBegin() must take no action.
Because this renderer returns true from
getRendersChildren(), the encodeChildren()
method must take the following action.
If there is no name attribute, and the
argument component has no children, and
ProjectStage is not
ProjectStage.Production, add a
FacesMessage for this component's clientId to the
FacesContext stating that if no name attribute is
present, and no body content is present either, then the user
should take action to correct this problem. In this case,
encodeChildren() must take no further
action.
If there is no name attribute and the argument
component does have children, the renderer
must ensure that those children are encoded as usual.
If there is a name attribute and the
argument component does have children, the
renderer must log a descriptive localized message stating that
the child content will be ignored. The resource referenced by
the name attribute will be rendered in
encodeEnd().
If there is a name attribute and the
argument component does not have children,
encodeChildren() must take no action.
encodeEnd() must take specific action based on
the specific kind of resource being rendered.
Use the algorithm Common Encode Behavior for
encodeBegin(), encodeChildren() and
getRendersChildren().
For encodeEnd(), use the algorithm Common
Algorithm for Obtaining A Resource to Render above to
obtain a reference to the Resource to be
encoded.
If this is NOT the first time this Resource has
been referenced on this request take no action and return.
Render a script element. Use the result from calling
resource.getRequestPath() as the value of the "src"
attribue and the result from calling
resource.getContentType() as the value of the "type"
attribute.
This renderer is responsible for rendering its children.
Attributes with a pass-through value of
true are not interpreted by the renderer and are passed
straight through to the rendered markup, without checking for validity. Attributes with a
pass-through value of false are interpreted
by the renderer, and may or may not be checked for validity by the renderer.
| Attributes | |||||
| attribute-name | pass-through | attribute-class | description | default-value | |
|---|---|---|---|---|---|
library
|
false | java.lang.String |
The libraryName for this resource. |
undefined | |
name
|
false | java.lang.String |
The resourceName for this resource. |
undefined | |
target
|
false | java.lang.String |
The target area for which this resource will be rendered. For example, target="head" would cause the resource to be rendered within the head element. |
undefined | |