【发布时间】:2013-06-23 09:10:04
【问题描述】:
我有一个普通的数据表,其中包含编辑按钮,它会打开一个弹出窗口。
<h:form id="creditcard_configuration_form">
<rich:dataTable id="test" width="100%"
value="#{creditcardConfigurationService.cardsList}"
iterationStatusVar="it" var="card">
<rich:column>
<a4j:commandLink execute="@this" ajaxSingle="true"
oncomplete="#{rich:component('test123')}.show()">
<h:graphicImage value="../../resources/images/edit.gif"
alt="edit" />
<a4j:param value="#{it.index}"
assignTo="#{creditcardConfigurationAction.currentIndex}" />
</a4j:commandLink>
</rich:column>
</rich:dataTable>
<rich:popupPanel id="test123"
header="#{creditcardConfigurationAction.currentIndex}"
onmaskclick="#{rich:component('test123')}.hide()">
asdf
</rich:popupPanel>
</h:form>
在打开弹出窗口之前,我在我的 bean 中设置了一个索引变量。但是,JSF 在打开弹出窗口时不会调用 getter 方法来获取index 的a4j:param(或者至少不再如此)。我发现,在呈现页面时调用了 getter-method,但在那之后就再也没有了。 (意味着,对于弹出窗口,索引始终显示为 0)。
包含索引变量的 bean 是视图范围的,而服务 bean 是会话范围的。我正在使用最新版本的 RichFaces(4.3.2 Final)和 JSF 2.0.6。
【问题讨论】:
-
会很好,但这不会改变任何事情。
-
哦!
indexvar 意思是#{it.index}在param标签中,对吗?我预计您会谈论您在popuppanel中添加的一些元素。 -
是的,索引变量的值是#{it.index},它在bean中被称为currentIndex,就像你可以看到的那样。我在 popupPanel 中有一些输入元素和按钮,但这并不重要,因为它甚至不起作用,如果 popupPanel 是空的,就像我在上面发布的示例中一样。
-
所以在这种情况下,您可以在 commandLink 中使用
action或actionlistner并从中获取索引值。