org.sonar.plugins.xml.schemas.jsf.html-basic-2.0.xsd Maven / Gradle / Ivy
Show all versions of sonar-xml-plugin Show documentation
This tag library contains JavaServer Faces component tags for all UIComponent + HTML RenderKit Renderer combinations defined in the JavaServer Faces Specification.
tlib-version: 1.2
Renders an HTML "input"
element.
Decode Behavior
Obtain the Map
from the "requestParameterMap"
property of the ExternalContext
. If the value in the
Map
for the value of the "clientId" property of the
component is null
, create a String by concatenating
the value of the "clientId" property of the component with the
String ".x" (without the quotes). Create another String in the
same manner, but concatenate ".y" (without the quotes). If
null
is the value in the Map
for both
Strings, return from decode()
. If the value in the
Map
for the value of the "clientId" property of the
component is not null
, get the value of the "type"
attribute, and convert it to lower case. If the result is equal
to the String "reset" (without the quotes), return from
decode()
. Otherwise, create a
javax.faces.event.ActionEvent
around the component,
and pass it to the queueEvent()
method of the
component, which must be an instance of
UICommand
.
Encode Behavior
Render the clientId of the component as the value of the "name"
attribute. Render the current value of the component as the value
of the "value" attribute. If "image" attribute is specified render
it as the value of the "src" attribute after passing it to the
getResourceURL()
method of the
ViewHandler
for this application, and passing the
result through the encodeResourceURL()
method of the
ExternalContext
. Note that calling
getResourceURL()
will prefix the context-root of the
current application if the value of the "src" attribute starts
with "/". When handling the "image" attribute, the value must not
be escaped. For example, &
must not be turned into
&
. If the "styleClass" attribute is
specified, render its value as the value of the "class" attribute.
If the user has specified an "onclick" attribute, append that
JavaScript to any existing JavaScript before rendering.
If the component being rendered by
this renderer has any UIParameter
children, each one
of them must be rendered using the renderer for component-family:
"javax.faces.Input" and renderer-type: "javax.faces.Hidden". For
discussion, this is called the hiddenRenderer. A component with
component-type "javax.faces.Input" must be created for local use
in rendering each UIParameter
child. The "id"
property of the temporary component must be set to the "name" of
the UIParameter
. The "value" property of the
temporary component must be set to the "value" of the
UIParameter
. For each UIParameter
child, the hiddenRenderer must have its
encodeBegin()
, encodeChildren()
, and
encodeEnd()
methods called, in order, passing the
temporary component as the second argument.
]]>
tag-class: com.sun.faces.taglib.html_basic.CommandButtonTag
body-content: JSP
MethodExpression representing an action listener method that
will be notified when this component is activated by the user.
The expression must evaluate to a public method that takes an
ActionEvent parameter, 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 where the event came from,
but this can be useful in cases where a notification is needed
that "some action happened".
]]>
Absolute or relative URL of the
image to be displayed for this
button. If specified, this
"input" element will be of type
"image". Otherwise, it will be
of the type specified by the
"type" property with a label
specified by the "value"
property. Note
that if the value of this
attribute starts with "/", the
rendered value for this
attribute will be prefixed with
the context-root for this
application.
]]>
Render an HTML "a" anchor
element that acts like a form submit button when
clicked.
General Behaviour
Both the encode and decode behavior require the ability to get
the id/name for a hidden field, which may be rendered in markup or which
may be programmatically added via client DOM manipulation,
whose value is set by the JavaScript form submit. This name must
be constructed as follows:
Get the clientId for the form of which this component is a
child.
Append
NamingContainer.SEPARATOR_CHAR
.
Append a constant string that is the same for all command
link components in the tree.
In the following text, this String is called
hiddenFieldName.
Decode Behavior
Obtain the "clientId" property of the component. Obtain the
Map
from the "requestParameterMap" property of the
ExternalContext
. Derive hiddenFieldName as above.
Get the entry in the Map
under the key that is the
hiddenFieldName. If the there is no entry, or the entry is the
empty String, or the entry is not equal to the value of the
"clientId" property, return immediately. If there is an entry,
and its value is equal to the value of the "clientId" property,
create a new javax.faces.event.ActionEvent
instance
around the component and call queueActionEvent()
on
the component, passing the event.
Encode Behavior
If the value of the disabled
attribute is
true
, render a span element. Render all the passthru
attributes and the target
attribute as pass-through
attributes on the span, even though the target
attribute will have no effect on a span. Render the current value
of the component as the content of the span. Return.
If the disabled
attribute is not present, or its
value is false
, render an HTML a
element. Render "#" as the value of the "href" attribute. Render
the current value of the component as the link text if it is
specified. Render JavaScript that is functionally equivalent to
the following as the value of the "onclick" attribute:
document.forms['CLIENT_ID']['hiddenFieldName'].value='CLIENT_ID';
document.forms['CLIENT_ID']['PARAM1_NAME'].value='PARAM1_VALUE';
document.forms['CLIENT_ID']['PARAM2_NAME'].value='PARAM2_VALUE';
return false;
document.forms['CLIENT_ID'].submit()" where hiddenFieldName is
as described above, CLIENT_ID is the clientId of the UICommand
component, PARAM*_NAME and PARAM*_VALUE are the names and values,
respectively, of any nested UIParameter children. The name and
the value must be URLEncoded. If an "onclick" attribute was
specified by the user, render this JavaScript in a function,
and render the user's JavaScript in a function. Render both functions
in a choice function as follows:
var a=function(){#USER_FUNCTION#};
var b=function(){#JSF_FUNCTION#};
return (a()==false) ? false : b();
where #USER_FUNCTION# is the user's JavaScript and
#JSF_FUNCTION# is the JavaScript rendered by JSF. The choice
function should operate such that if the user's JavaScript returns
true, then the rendered JavaScript will also execute.
If the "styleClass" attribute is specified, render its value as
the value of the "class" attribute. Render any non-UIParameter
output children as normal inside of the "a" element. These will
appear as the link text. Allow the form renderer to output a
single "input" element (for the entire page, regardless of how
many command link components are in the page) of "type" "hidden"
whose "name" is the value of hiddenFieldName, and which must not
have a "value" attribute. Multiple occurrences of command link
components in the tree should not cause multiple hiddenFieldName
hidden fields. Allow the form renderer to output an "input"
element of "type" "hidden" for each of the nested UIParameter
children, taking the name property (but not the value) from each
one in turn. If the "disabled" attribute is specified, do not
render the HTML "a" anchor element or its "href" attribute.
Instead, render a "span" element. If the "styleClass" attribute
is specified, render its value as the value of the "class"
attribute on the "span". Render any pass-through attributes on
the "span". The content of the span element comes from the value
of the component or its children as specified above.
If the user specified a target
attribute, its
value must be set using javascript since the onclick
handler will prevent the target attribute from being generated.
This must be accomplished using JavaScript that is equivalent to
the following.
document.forms['CLIENT_ID'].target='TARGET';
Where TARGET is the value of the target attribute on the JSP
tag.
]]>
tag-class: com.sun.faces.taglib.html_basic.CommandLinkTag
body-content: JSP
MethodExpression representing an action listener method that
will be notified when this component is activated by the user.
The expression must evaluate to a public method that takes an
ActionEvent parameter, 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 where the event came from,
but this can be useful in cases where a notification is needed
that "some action happened".
]]>
Renders an HTML "table" element compliant with the HTML 401
specification. Render the "caption" facet, if present, inside a
"caption" element immediately below the "table" element. If the
"captionClass" attribute is specified, render its value as the
value of the "class" attribute on the "caption" element. If the
"captionStyle" attribute is specified, render its value as the
value of the "style" attribute on the "caption" element.
Please consult the javadoc for UIData
to
supplement this specification. If the "styleClass" attribute is
specified, render its value as the value of the "class" attribute
on the "table" element. Any pass-through attributes are also
rendered on the "table" element.
Column Groups
If the UIData
component has a "colgroups" facet,
render its contents. Consistent with the rules of facets in
general, this facet must have only one child. In general, this
will be a panel group
component that will contain
colgroup
and col
elements per the HTML
Table specification. Use of column grouping can improve
accessibility. This facet must be rendered before the table
header and footer.
Rendering the header
If the UIData
component has a "header" facet, or
any of the child UIColumn
components has a "header"
facet, render a "thead" element. If the UIData
component has a "header" facet, encode its contents inside of "tr"
and "th" elements, respectively. Output the value of the
"headerClass" attribute of the UIData
component, if
present, as the value of the "class" attribute on the "th".
Output the number of child UIColumn
components of the
UIData
component as the value of the "colspan"
attribute on the "th". Output "colgroup" as the value of the
"scope" attribute on the "th" element.
If any of the child UIColumn
components has a
"header" facet render a "tr" element. For each
UIColumn
that actually has a "header" facet, render
it inside of a "th" element. Columns that don't have a "header"
facet cause an empty "th" element to be rendered. Output the
value of the "headerClass" attribute of the UIColumn
component, if present, as the value of the "class" attribute on
the "th". If the "headerClass" attribute of the UIColumn
component is not present, output the value of the "headerClass"
attribute of the UIData
component, if present, as
the value of the "class" attribute on the "th". Output "col" as
the value of the "scope" attribute on the "th" element.
Close out the "thead" element.
Rendering the footer
Follow the same process as for the header, except replace
"header" with "footer", "th" with "td", "thead" with "tfoot", and
"headerClass" with "footerClass". Do not render any "scope"
attribute for the footer.
Rendering the table body
Look at the value of the "bodyrows" attribute. If present,
this must be a comma separated list of integers. Each entry in
this list is the row index of the row before which a "tbody"
element should be rendered.
If there was no "bodyrows" attribute, or it was empty, render a
"tbody" element. Keep track of the result of the "rows" property
on the UIData
component. Keep track of the number of
rows we have rendered so far. Iterate through the rows. Set the
"rowIndex" property of the UIData
component to be
correct as we iterate through the rows. Stop rendering children
and close out the "tbody" element if the "rowAvailable" property
of the UIData
returned false. If the current row
index is contained in the "bodyrows" attribute, check if a "tbody"
start element was rendered that needs to be closed, and if so,
close the "tbody" element. Then render a "tbody" element start.
Otherwise, do not render a "tbody" element.
Output a "tr" element. Output the value of the "rowClasses"
per the attribute description below. For each
UIColumn
child, if the column component has a
"rowHeader" attribute with a value of "true", output a "th"
element with a "scope" attribute with the value of "row".
Otherwise, if the column component has no "rowHeader" attribute,
or its value is false, output a "td" element. In either case
attach the value of the "columnClasses" attribute of the
UIData
component per the attribute description below.
Recursively encode each child of each UIColumn
child.
Close out the "td" or "th" element. When done with the row, close
out the "tr" element. When done with all the rows, close out the
"tbody" element.
When done rendering all the rows, set the "rowIndex" property of
the UIData
to -1, and close out the "table"
element.
]]>
tag-class: com.sun.faces.taglib.html_basic.DataTableTag
body-content: JSP
Renders an HTML "form" element.
Decode Behavior
Obtain the Map
from the "requestParameterMap"
property of the ExternalContext
. If the map contains
an entry for the "clientId" of this UIForm
component,
call setSubmitted(true)
on the form, otherwise call
setSubmitted(false)
on the form.
Encode Behavior
The value of the "method" attribute must be "post". The value
of the "action" attribute must be the result of passing the view
identifier of the current view to the getActionURL()
method of the ViewHandler
for this application, then
passing that String to the encodeActionURL()
method
on the ExternalContext
. The value of the acceptcharset
attribute must be rendered as the value of "accept-charset".
If the "styleClass" attribute is specified, render its value as the
value of the "class" attribute. Render a "name"
attribute with a value the same as the "id" attribute as described
in "General Notes on
Encoding" regarding the "id" attribute for UIInput
components. Call ViewHandler.writeState()
before the the close of the "form" element. Render all the
necessary hidden fields for all commandLink instances in the page
just before the close of the "form" element.
Just before rendering the closing </form>
element tag, render
any resources that have been targeted for this form:
- Obtain a
UIViewRoot
instance.
- Obtain a
List
of component resources targeted for
this form with a call to UIViewRoot.getComponentResources()
with the String "form"
as the argument.
- Iterate over the returned
List
of UIComponent
instances
and call encodeAll
on each UIComponent
instance.