У меня есть обычная таблица данных, содержащая кнопки редактирования, которая открывает всплывающее окно.
<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>
Перед открытием всплывающего окна я установил индексную переменную в своем компоненте. Однако JSF не вызывает метод getter для получения index
из a4j:param
при открытии всплывающего окна (по крайней мере, больше нет). Я обнаружил, что геттер-метод вызывается при рендеринге страницы, но никогда после этого. (означает, что для всплывающего окна индекс всегда равен 0).
Компонент, содержащий index var, находится в области просмотра, а сервисный компонент — в области сеанса. Я использую новейшую версию RichFaces (4.3.2 Final) и JSF 2.0.6.
index
var означает#{it.index}
, который находится в тегеparam
, я прав? Я предсказываю, что вы говорите о каком-то элементе, который вы поместили вpopuppanel
. - person Jubin Patel   schedule 26.06.2013action
илиactionlistner
в commandLink и получить от него значение индекса. - person Jubin Patel   schedule 26.06.2013