Search code examples
primefacesliferaydialog-framework

Primefaces Dialog Framework Liferay


Primefaces Dialog Framework opens the same portlet page instead of required page.

<p:commandButton value="Dialog" process="@this" icon="ui-icon-extlink" actionListener="#{controller.viewDialog}" />

Bean:

public void viewDialog() {
    Map<String,Object> options = new HashMap<String, Object>();
    options.put("modal", true);
    options.put("draggable", false);
    options.put("resizable", true);
    options.put("contentHeight", 320);

    RequestContext.getCurrentInstance().openDialog("viewDialog", options, null);    

viewDialog.xhtml:

<f:view xmlns="http://www.w3.org/1999/xhtml"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:portlet="http://java.sun.com/portlet_2_0">
<h:head />
<h:body styleClass="jsf2-portlet">
    <f:event type="preRenderView" listener="#{dialog.initController}" />

</h:body>


Solution

  • if not then add Navigation Rule for "viewDialog" in your faces-config.xml which references viewDialog.xhtml.

    <application>
    
        <action-listener>org.primefaces.application.DialogActionListener</action-listener>
        <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler>
        <view-handler>org.primefaces.application.DialogViewHandler</view-handler>
    
    </application>
    
    
    <navigation-rule>
            <from-view-id>*</from-view-id>
            <navigation-case>
                <from-outcome>viewDialog</from-outcome>
                <to-view-id>{path}/viewDialog.xhtml</to-view-id>
            </navigation-case>
    </navigation-rule>