public class TagAttribute extends TagHandler
The <o:tagAttribute>
is a tag handler that can be used to explicitly declare a tag attribute on
a Facelets tag file. This makes sure that any tag attribute with the same name on a parent tag file is cleared out,
which does not properly happen in Mojarra.
Consider the following custom tag structure:
<my:tag id="foo"> <my:tag id="bar" /> </my:tag>
Inside the nested tag, the #{id}
will just evaluate to "bar"
. However, if this isn't
declared on the nested tag like so,
<my:tag id="foo"> <my:tag /> </my:tag>
then #{id}
of the nested tag would evaluate to "foo"
instead of null
, even when you explicitly
specify the attribute in the *.taglib.xml
file.
This tag handler is designed to overcome this peculiar problem and unintuitive behavior of nested tagfiles in Mojarra.
Just declare the attribute name in top of the tagfile as below.
<o:tagAttribute name="id" />
You can optionally provide a default value.
<o:tagAttribute name="type" default="text" />Since OmniFaces 2.7/3.2 there is a special case for a
<o:tagAttribute name="id">
without
a default value: it will override any autogenerated ID into the form of j_ido[tagId]
where [tagId]
is the <o:tagAttribute>
tag's own unique ID.nextHandler, tag, tagId
Constructor and Description |
---|
TagAttribute(TagConfig config) |
Modifier and Type | Method and Description |
---|---|
void |
apply(FaceletContext context,
UIComponent parent) |
getAttribute, getRequiredAttribute, toString
public TagAttribute(TagConfig config)
public void apply(FaceletContext context, UIComponent parent) throws IOException
IOException
Copyright © 2012–2022 OmniFaces. All rights reserved.