【发布时间】:2013-02-18 19:28:37
【问题描述】:
我有这个 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;
在我的豆子上。 如何将此参数传递给请求?
【问题讨论】:
-
您的支持 bean 是 Spring 托管 bean?那个 bean 的作用域是什么?
-
是的,它由 spring 管理,我使用的是本文中的方法。 harezmi.com.tr/spring-view-scope-for-jsf-2-users
-
根据本文,您正在使用视图范围。托管属性(如您的示例中的
@View注释属性)在 bean 创建后立即注入。以后不能注入。在此 AJAX 请求中,您的 bean 已经创建。 -
有点复杂。我有处理这个 tabChange 事件的 bean,它将页面加载到
ui:include组件。这些加载的页面正在使用另一个我需要此 ID 的 bean。<p:layoutUnit id="tabContent"><ui:include src="#{integrationBean.template}" /></p:layoutUnit>和integrationBean.tabChanged 方法只是将模板属性设置为要加载的模板名称。 -
您是否尝试过 JSF
@ViewScoped和@ManagedPropety组合来实现这一点,而不是将 bean 范围移植到 Spring 中?
标签: ajax spring jsf primefaces