我有这个tabview组件:
<p:tabView id="tabView"
var="tab"
dynamic="true"
cache="true"
value="#{integrationBean.tabs}">
<p:ajax event="tabChange"
listener="#{integrationBean.tabChanged}"
update="tabContent"/>
我需要传递属性到ajax请求。比如
<p:ajax event="tabChange"
listener="#{integrationBean.tabChanged}"
update="tabContent">
<f:param name="id" value="#{integrationBean.id}" />
<!-- OR -->
<f:attribute name="id" value="#{integrationBean.id}" />
<!-- Neither of this works -->
</p:ajax>
所以我可以做
@Value("#{request.getParameter('id')}")
protected Long id;
on my bean。如何将此参数传递给请求?
使用<p:remoteCommand>
<p:ajax event="tabChange" oncomplete="tabChangeCommand()" />
<p:remoteCommand name="tabChangeCommand" actionListener="#{integrationBean.tabChanged}" update="tabContent">
<f:param name="id" value="#{integrationBean.id}" />
</p:remoteCommand>
在xhtml中使用<f:param/>
<f:param name="id" value="#{integrationBean.id}" />
您可以使用ExternalContext#getRequestParameterMap()
从备份bean中检索它
Map<String, String> map = (Map<String, String>) externalContext.getRequestParameterMap();
String paramValue= map.get("paramName");
通过将id放入flash作用域并在ajax请求中获取它来解决此问题。这不是理想的解决方案,但它有效。