public class ImportConstants extends TagHandler
The <o:importConstants>
taghandler allows the developer to have a mapping of all constant field
values of the given fully qualified name of a type in the request scope. The constant field values are those public
static final fields. This works for classes, interfaces and enums.
For example:
public class Foo { public static final String FOO1 = "foo1"; public static final String FOO2 = "foo2"; } public interface Bar { public String BAR1 = "bar1"; public String BAR2 = "bar2"; } public enum Baz { BAZ1, BAZ2; }
The constant field values of the above types can be mapped into the request scope as follows:
<o:importConstants type="com.example.Foo" /> <o:importConstants type="com.example.Bar" /> <o:importConstants type="com.example.Baz" var="Bazzz" /> ... #{Foo.FOO1}, #{Foo.FOO2}, #{Bar.BAR1}, #{Bar.BAR2}, #{Bazzz.BAZ1}, #{Bazzz.BAZ2}
The map is by default stored in the request scope by the simple name of the type as variable name. You can override
this by explicitly specifying the var
attribute, as demonstrated for com.example.Baz
in
the above example.
The resolved constants are by reference stored in the cache to improve retrieving performance. There is also a
runtime (no, not compiletime as that's just not possible in EL) check during retrieving the constant value.
If a constant value doesn't exist, then an IllegalArgumentException
will be thrown.
JSF 2.3 also offers a <f:importConstants>
, however it requires being placed in
<f:metadata>
which may not be appropriate when you intend to import constants only from
a include, tagfile or a composite component.
nextHandler, tag, tagId
Constructor and Description |
---|
ImportConstants(TagConfig config)
The tag constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
apply(FaceletContext context,
UIComponent parent)
First obtain the constants of the class by its fully qualified name as specified in the
type
attribute from the cache. |
getAttribute, getRequiredAttribute, toString
public ImportConstants(TagConfig config)
config
- The tag config.public void apply(FaceletContext context, UIComponent parent) throws IOException
type
attribute from the cache. If it hasn't been collected yet and is thus not present in the cache, then collect
them and store in cache. Finally set the constants in the request scope by the simple name of the type, or by the
name as specified in the var
attribute, if any.IOException
Copyright © 2012–2022 OmniFaces. All rights reserved.