Search expression framework
In before JSF versions, it uses an absolute hierarchical ID, or a relative local ID to locate a component, it is useful to rerender a component in an ajax request. For more flexible to query the component, JSF added @all
, @form
, @this
expression to search the component to be re-rendered.
JSF 2.3 extends these expression by introducing new Component search expression framework, which adds some useful and powerful keywords, and also provides APIs to define your own keywords in the expression.
The following table lists all new keywords added in JSF 2.3, it is just a copy from Arjan Tijms' blog entry: What's new in JSF 2.3.
Keyword
Description
@child(n)
The nth child of the base component
@composite
The closest composite component ancestor of the base component
@id(id)
All component descendants of the base component with the specified component id
@namingcontainer
The closest NamingContainer ancestor of the base component
@next
The next component in the view after the base component
@parent
The parent of the base component
@previous
The previous component to the base component
@root
The UIViewRoot
Let's try to create a custom keyword to find the grant parent node of the certain component in the component tree.
Create a new SearchKeywordResolver
.
Register it via a @WebListener
class.
A simple facelets template.
Get the grandParent id of the certain component at runtime.
Grab the source codes from my GitHub account, and have a try.
Last updated