Send additional parameter to Ajax event listener
You could set an attribute in your data table and read it in your select listener. To do so, use <f:attribute name="..." value="..."/>
. From the documentation:
Constraints
Must be nested inside a
UIComponent
custom action.Description
Locate the closest parent
UIComponent
custom action instance (...). If the associated component already has a component attribute with that name, take no action. Otherwise, call theisLiteralText()
method on the argumentvalue
. If it returnstrue
, store the value in the component’s attribute Map under the name derived above. If it returnsfalse
, store theValueExpression
in the component’sValueExpression
Map under the name derived above.
So, taking the attribute you tried to set in your comment, you should use it like:
XHTML:
<p:dataTable value="#{aObj.objList}" var="item" .... selectionMode="single">
<f:attribute name="test" value="abc" />
<p:ajax event="rowSelect" listener="#{aObj.viewItem}" />
...
</p:dataTable>
Listener:
public void viewItem(SelectEvent event) {
String test = (String) event.getComponent().getAttributes().get("test");
// ...
}
When you want to add request parameters, which are specific to the ajax
tag, you can do at the onstart
method:
<p:ajax onstart="cfg.ext.params.push({name: 'name', value: 'value'});"/>
Usually, you should solve parameters using the model.