0

我在示例应用程序中使用 JSF (Mojara) 和 Primefaces 3.4。我在屏幕上应用布局,其中标题(北)有一个图像链接(单击时打开一个对话框)。

北头.xhtml

<h:body>    
        <h:form id="headerForm">    

        <p:panelGrid id="headerFormPanelGridID" style="align:left;border:0px>
                <p:row> 

            <p:column width="70">
    <p:commandLink onclick="dialogWidgetWar.show();"  title="SampleImg">
    <p:graphicImage value="../sampleimg.jpg" />
    </p:commandLink>
            </p:column> 


            </p:row> 


        </p:panelGrid>




    <p:dialog id="idInfo"  modal="true" widgetVar="dialogWidgetWar" header="Sample Layout" border="0" width="400"  height="100" resizable="true" >          
        <h:panelGrid id="sampleId" style="cellpadding" border="0" cellpadding="0" cellspacing="0" width="200">


        </h:panelGrid>          
    </p:dialog>

        </h:form>       
</h:body>

对于布局

<html lang="en"
     xmlns="http://www.w3.org/1999/xhtml"
     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">
   <h:head>

    </h:head> 
    <h:body>    

        <p:layout fullPage="true">
            <p:layoutUnit position="north" size="100" resizable="false" closable="false" collapsible="false">
                     <ui:include src="../northheader.xhtml" /> 

            </p:layoutUnit>

            <p:layoutUnit position="west" size="200" resizable="false" closable="false" collapsible="false">

                    <ui:include src="../left.xhtml" />

             </p:layoutUnit>

            <p:layoutUnit position="center" size="200">

                <ui:insert name="pageContent"></ui:insert>
            </p:layoutUnit>

        </p:layout>

    </h:body>

</html>

布局正在正确显示,但是当我单击northheader.xhtml 中的“SampleImg”链接时,即使我在对话框中添加了一个关闭按钮并且无法正常工作,它也会打开但关闭对话框onclick="dialogWidgetWar.hide()"不起作用。我什至无法选择任何东西。

谁能帮帮我,问题出在哪里?

4

3 回答 3

2

在p:dialog中添加appendToBody="true"属性

<p:dialog id="idInfo"  modal="true" appendToBody="true" 
widgetVar="dialogWidgetWar" header="Sample Layout" border="0" width="400"  height="100" resizable="true" > 
于 2012-09-16T20:04:35.657 回答
1

您正在使用 a p:dialoginside a p:layout。这总是导致我过去的经验出现问题。一个固定的解决方案是放置在p:dialog外面p:layout。由于您正在使用ui:define并且ui:insert这看起来并不简单,但是它非常简单。由于您可以ui:define在一个 JSF 页面中定义多个元素,因此您可以定义“内容”和“对话框”ui:insert以及ui:define.

<p:layout>
    <p:layoutUnit ...
        <ui:insert name="content"/>
    </p:layoutUnit>
</p:layout>
<ui:insert name="dialogs"/>
于 2012-09-17T05:27:38.837 回答
1

试试这个,这应该可以;

 <p:commandLink onclick="PrimeFaces.monitorDownload(hideStatus);"  title="SampleImg">

java脚本;

    <script type="text/javascript">
            function showStatus() {
                dialogWidgetWar.show();
            }

            function hideStatus() {
                dialogWidgetWar.hide();
            }
        </script>
于 2012-09-19T07:55:53.003 回答