Вот мой commandButton внутри столбца с данными, задание которого состоит в удалении связанного объекта строки:
<p:column style="width:6%;text-align:center"
headerText="Delete">
<p:commandButton icon="ui-icon-close"
title="Delete release #{release.name}"
actionListener="#{releaseBean.deleteRelease(release)}"
process="@this" update=":display :form2:releaseList">
<p:confirm
header="Confirm deleting release #{release.name}"
message="Are you really sure you want to delete release #{release.name}?"
icon="ui-icon-alert" />
</p:commandButton>
</p:column>
Я хочу, чтобы название выпуска отображалось в сообщении подтверждения удаления (Вы действительно уверены, что хотите удалить выпуск «XYZ»?). Но проблема в том, что имя выпуска «XYZ» не отображается ни в заголовок <p:confirm>
ни в сообщении; но это отображается в заголовке <p:commandButton>
.
Что я сделал не так? Спасибо.
РЕДАКТИРОВАТЬ:
Я попытался изменить commandButton и добавить setPropertyActionListener
:
<p:commandButton icon="ui-icon-close"
title="Delete release #{release.name}"
actionListener="#{releaseBean.deleteRelease(release)}"
process="@this" update=":display :form2:releaseList">
<f:setPropertyActionListener
target="#{gestionReleaseBean.selectedRelease}"
value="#{release}" />
<p:confirm
header="Confirm deleting release #{release.name}"
message="Are you really sure you want to delete release #{release.name}?"
icon="ui-icon-alert" />
</p:commandButton>
и в компоненте я добавил свойство selectedRelease
и его геттер/сеттер.
Это не сработало...
update
commandButton идентификатор встроенного в него компонента? - person perissf   schedule 15.07.2014<p:growl id="display">
и всего<p:datatable>
(в котором находится кнопка), чтобы подавить только что удаленную строку. Почему? - person Sinda MOKADDEM   schedule 15.07.2014dialog
илиconfirmDialog
с атрибутом из компонента вместоp:confirm
с глобальнымconfirmDialog
? - person rion18   schedule 16.07.2014<p:confirm/>
не может оценить локальную переменную таблицы данных. Похоже, что он может оценивать только те значения, которые доступны во время построения страницы, а не во время рендеринга страницы. Это означает, что только значение, доступное в вашем резервном компоненте до того, как таблица данных будет отображена, попадет в разметку. Вы можете проверить сгенерированный javascript самостоятельно, чтобы убедиться, что js, отвечающий за само всплывающее окно, имеет пустые значения, где вашvar
должен быть - person kolossus   schedule 16.07.2014<h:form> <p:commandButton type="button" onclick="PF('cd').show()" /> <p:confirmDialog message="Are you sure about destroying the world?" header="Initiating destroy process" severity="alert" widgetVar="cd"> <p:commandButton value="Yes Sure" actionListener="#{buttonBean.destroyWorld}" update="messages" oncomplete="PF('cd').hide()"/> <p:commandButton value="Not Yet" onclick="PF('cd').hide();" type="button" /> </p:confirmDialog> </h:form>
- person Sinda MOKADDEM   schedule 16.07.2014selectedObject
(или что-то в этом роде) и ссылке на#{bean.selectedObject.name}
из диалогового окна... - person rion18   schedule 16.07.2014selectedObject
? - person Sinda MOKADDEM   schedule 16.07.2014<f:setPropertyActionListener target="#{bean.selectedObject}" value="#{release}" />
внутри вашегоp:commandButton
- person rion18   schedule 18.07.2014p:confirm
работать не будет. Вам нужно создать диалоговое окно или confirmDialog вне таблицы и сослаться на этот компонент. - person rion18   schedule 18.07.2014<p:confirm header="Confirm deleting release #{gestionReleaseBean.selectedRelease.name}" message="Are you really sure you want to delete release #{gestionReleaseBean.selectedRelease.name}?" icon="ui-icon-alert"/>
- person rion18   schedule 19.07.2014#{gestionReleaseBean.selectedRelease.name}?
, а в вашем -#{release.name}
... - person rion18   schedule 25.07.2014