我正在尝试转换我的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>
答案 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 */
}