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. Use the result from calling
resource.getContentType()
as the value of the "type"
attribute, unless the value equals text/javascript
and the current doctype is a HTML5 doctype.
Info | Value |
---|---|
Component Type | jakarta.faces.Output |
Handler Class | None |
Renderer Type | jakarta.faces.resource.Script |
Description | None |
Name | Required | Type | Description |
---|---|---|---|
converter
|
false
| jakarta.el.ValueExpression
(must evaluate to
jakarta.faces.convert.Converter
)
| Converter instance registered with this component. |
id
|
false
| jakarta.el.ValueExpression
(must evaluate to
java.lang.String
)
| The component identifier for this component. This value must be unique within the closest parent component that is a naming container. |
rendered
|
false
| jakarta.el.ValueExpression
(must evaluate to
boolean
)
| Flag indicating whether or not this component should be rendered (during Render Response Phase), or processed on any subsequent form submit. The default value for this property is true. |
value
|
false
| jakarta.el.ValueExpression
(must evaluate to
java.lang.Object
)
| The current value of this component. |
library
|
false
| jakarta.el.ValueExpression
(must evaluate to
java.lang.String
)
|
The libraryName for this resource. |
name
|
false
| jakarta.el.ValueExpression
(must evaluate to
java.lang.String
)
|
The resourceName for this resource. This attribute is required if the script is NOT inline. |
target
|
false
| jakarta.el.ValueExpression
(must evaluate to
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. |
binding
|
false
| jakarta.el.ValueExpression
(must evaluate to
jakarta.faces.component.UIComponent
)
| The ValueExpression linking this component to a property in a backing bean |
role | false | jakarta.el.ValueExpression
(must evaluate to java.lang.String )
|
Per the WAI-ARIA spec and its relationship to HTML5 (Section title ARIA Role Attriubute), every HTML element may have a "role" attribute whose value must be passed through unmodified on the element on which it is declared in the final rendered markup. The attribute, if specified, must have a value that is a string literal that is, or an EL Expression that evaluates to, a set of space-separated tokens representing the various WAI-ARIA roles that the element belongs to. It is the page author's responsibility to ensure that the user agent is capable of correctly interpreting the value of this attribute. |