将额外参数传递给p:ajax event =“rowSelectRadio”侦听器

时间:2015-11-24 06:40:03

标签: ajax jsf-2 primefaces datatable parameter-passing

我正在尝试转换我的JSF应用程序,其中所有托管bean都是会话范围的,我正在将它们转换为请求作用域并使用唯一会话ID手动维护数据作为从httpsession写入和读取数据的请求参数。

我在我的页面中使用primefaces数据表,并选择了一行,我在我的支持bean中用p:ajax调用一个监听器函数。

<p:ajax event="rowSelectRadio" listener="#{userB.onUnitSelect}" >
</p:ajax>

我有我的sessionID,我在其中以

形式隐藏字段中访问我的数据
<h:inputHidden id="SID" value="#{userB.sessionID}" />

我试图在触发上述ajax事件时传递上述值。 我尝试了以下两种方式,我无法访问我的SID值

<p:ajax event="rowSelectRadio" listener="#{userB.onUnitSelect}" >
    <f:param name="SID" value="#{userB.sessionID}" />
</p:ajax>

<p:ajax event="rowSelectRadio" listener="#{userB.onUnitSelect}" >
<f:setPropertyActionListener target="#{userB.sessionID}" value="1234" />
</p:ajax>

ajax调用位于primefaces数据表标记内

<p:dataTable></p:dataTable>

1 个答案:

答案 0 :(得分:1)

这是我在stackoverflow的第一个答案。 我知道这是一个老问题,但我想分享我如何解决这个问题。

<f:attribute name="sid" value="#{userB.sessionID}" />
<p:ajax event="rowSelectRadio" listener="#{userB.onUnitSelect}" />

和你的onUnitSelect方法

public void onUnitSelect(SelectEvent event) {

    String sid = (String) event.getComponent().getAttributes().get("sid");

   /* your logic */
}