public final class Ajax extends Object
Collection of utility methods for working with PartialViewContext
. There are also shortcuts to the current
OmniPartialViewContext
instance.
This utility class allows an easy way of programmaticaly (from inside a managed bean method) specifying new client
IDs which should be ajax-updated, also UIData
rows or columns on specific index, specifying callback scripts
which should be executed on complete of the ajax response and adding arguments to the JavaScript scope. The added
arguments are during the "on complete" phase as a JSON object available by OmniFaces.Ajax.data
in
JavaScript context.
The JSON object is been encoded by Json.encode(Object)
which supports standard Java types Boolean
,
Number
, CharSequence
and Date
arrays, Collection
s and Map
s of them and as
last resort it will use the Introspector
to examine it as a Javabean and encode it like a Map
.
Note that updateRow(UIData, int)
and updateColumn(UIData, int)
can only update cell content when
it has been wrapped in some container component with a fixed ID.
Json
,
OmniPartialViewContext
,
OmniPartialViewContextFactory
Modifier and Type | Method and Description |
---|---|
static void |
data(Map<String,Object> data)
Add the given mapping of data arguments to the current ajax response.
|
static void |
data(Object... namesValues)
Add the given data arguments to the current ajax response.
|
static void |
data(String name,
Object value)
Add the given data argument to the current ajax response.
|
static PartialViewContext |
getContext()
Returns the current partial view context (the ajax context).
|
static void |
oncomplete(String... scripts)
Execute the given scripts on complete of the current ajax response.
|
static void |
update(String... clientIds)
Update the given client IDs in the current ajax response.
|
static void |
updateAll()
Update the entire view.
|
static void |
updateColumn(UIData table,
int index)
Update the column of the given
UIData component at the given zero-based column index. |
static void |
updateRow(UIData table,
int index)
Update the row of the given
UIData component at the given zero-based row index. |
public static PartialViewContext getContext()
Note that whenever you absolutely need this method to perform a general task, you might want to consider to submit a feature request to OmniFaces in order to add a new utility method which performs exactly this general task.
FacesContext.getPartialViewContext()
public static void update(String... clientIds)
:
. This method also supports the client ID keywords
@all
, @form
and @this
which respectively refers the entire view, the
currently submitted form as obtained by Components.getCurrentForm()
and the currently processed
component as obtained by UIComponent.getCurrentComponent(FacesContext)
. Any other client ID starting
with @
is by design ignored, including @none
.clientIds
- The client IDs to be updated in the current ajax response.PartialViewContext.getRenderIds()
public static void updateAll()
PartialViewContext.setRenderAll(boolean)
public static void updateRow(UIData table, int index)
UIData
component at the given zero-based row index. This will basically
update all direct children of all UIColumn
components at the given row index.
Note that the to-be-updated direct child of UIColumn
must be a fullworthy JSF UI component which renders
a concrete HTML element to the output, so that JS/ajax can update it. So if you have due to design restrictions
for example a <h:panelGroup rendered="...">
without an ID, then you should give it an ID.
This way it will render a <span id="...">
which is updateable by JS/ajax.
table
- The UIData
component.index
- The zero-based index of the row to be updated.public static void updateColumn(UIData table, int index)
UIData
component at the given zero-based column index. This will basically
update all direct children of the UIColumn
component at the given column index in all rows. The column
index is the physical column index and does not depend on whether one or more columns is rendered or not (i.e. it
is not necessarily the same column index as the enduser sees in the UI).
Note that the to-be-updated direct child of UIColumn
must be a fullworthy JSF UI component which renders
a concrete HTML element to the output, so that JS/ajax can update it. So if you have due to design restrictions
for example a <h:panelGroup rendered="...">
without an ID, then you should give it an ID.
This way it will render a <span id="...">
which is updateable by JS/ajax.
table
- The UIData
component.index
- The zero-based index of the column to be updated.public static void oncomplete(String... scripts)
scripts
- The scripts to be executed.OmniPartialViewContext.addCallbackScript(String)
public static void data(String name, Object value)
OmniFaces.Ajax.data
.name
- The argument name.value
- The argument value.OmniPartialViewContext.addArgument(String, Object)
public static void data(Object... namesValues)
String
. They are as JSON
object available by OmniFaces.Ajax.data
.namesValues
- The argument names and values.IllegalArgumentException
- When the arguments length is not even, or when a name is not a string.OmniPartialViewContext.addArgument(String, Object)
public static void data(Map<String,Object> data)
OmniFaces.Ajax.data
.data
- The mapping of data arguments.OmniPartialViewContext.addArgument(String, Object)
Copyright © 2012–2014 OmniFaces. All rights reserved.