Платформа диалоговых окон Primefaces — диалоговое окно открывается только один раз

#jsf #primefaces

#jsf #primefaces

Вопрос:

Я хочу открыть диалоговое окно по щелчку строки таблицы. Это работает в первый раз (для каждой кнопки), но когда я закрываю диалоговое окно (вручную, с крестиком в углу), оно не будет отображаться в следующий раз. После того, как я обновлю страницу, она откроется снова.

Страница с таблицей:

 <h:form>
    <p:dataTable id="dataTable" var="ad" value="#{adsBean.ads}" widgetVar="adsTable" filteredValue="#{adsBean.filteredAds}" selectionMode="single" selection="#{adsBean.selected}" rowKey="#{ad.id}">
        <p:column id="test" headerText="test">
               <h:outputText value="test" />
        </p:column>
        <p:column>
               <p:commandButton icon="ui-icon-search" value="View" action="#{adsBean.viewAd()}" />
        </p:column>
    </p:dataTable>
</h:form>
  

Мой диалог:

 <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://java.sun.com/jsf/facelets" >

<h:head>
</h:head>

<h:body>
    dialogcontent
</h:body>
</html>
  

AdsBean.viewAd

 public void viewAd() {
    Map options = [
        modal: true
        ,draggable: false
        ,resizable: false
        ,contentHeight: 470
        ,contentWidth: 620
        ,width: 650
        ,height: 500
    ]
    RequestContext.getCurrentInstance().openDialog("fragments/index/viewAdDialog", options, null);
}
  

Есть мысли, как решить эту проблему?

Комментарии:

1. ., но вы можете попробовать использовать диалог Primefaces

2. @Khinsu Я использую то же самое, что вы связали. Если вы имеете в виду базовый диалог, я мог бы попробовать это, но я хочу работать с фреймворком диалога.

3. action="#{adsBean.viewAd()}" измените этот код на этот action="#{adsBean.viewAd}"

4. Также добавьте immediate="true" в свой commandButton of dataTable и скажите мне, помогло ли это

5. @anas изменил действие и добавил немедленное, но все еще не работающее.