Ответ 1
Кнопка должна быть ajax-кнопкой, которая устанавливает текущий итеративный объект в bean, а затем обновляет содержимое диалогового окна и, наконец, показывает его. Диалог должен просто ссылаться на этот объект в bean и обновлять список и таблицу сохранения.
Вот пример запуска:
<h:form id="master">
<p:dataTable value="#{bean.entities}" var="entity">
<p:column>#{entity.property1}</p:column>
<p:column>#{entity.property2}</p:column>
<p:column>#{entity.property3}</p:column>
...
<p:column>
<p:commandButton value="View" action="#{bean.setEntity(entity)}"
update=":detail" oncomplete="PF('detail').show()" />
</p:column>
</p:dataTable>
</h:form>
<p:dialog id="detail" widgetVar="detail">
<h:form>
<p:inputText value="#{bean.entity.property1}" />
<p:inputText value="#{bean.entity.property2}" />
<p:inputText value="#{bean.entity.property3}" />
...
<p:button value="Close" onclick="PF('detail').hide(); return false" />
<p:commandButton value="Save" action="#{bean.save}"
update=":master" oncomplete="PF('detail').hide()" />
</h:form>
</p:dialog>
При этом внутри @ViewScoped
bean:
private List<Entity> entities; // +getter
private Entity entity; // +getter+setter
@EJB
private EntityService entityService;
@PostConstruct
public void load() {
entities = entityService.list();
entity = null;
}
public void save() {
entityService.save(entity);
load();
}
См. также:
- Создание страниц главной страницы для объектов, как их связать и какую область bean выбрать
- Создание таблицы и диалога мастера-мастера, как повторно использовать один и тот же диалог для создания и редактирования
- Сохранять p: диалог открывается, когда после подтверждения появляется сообщение об ошибке проверки.
- Разница между визуализированными и видимыми атрибутами < p: dialog >
- Как отобразить диалоговое окно только при успешной отправке формы.