【问题标题】:Primefaces Dialog not working with ChromePrimefaces 对话框不适用于 Chrome
【发布时间】:2013-09-17 02:53:07
【问题描述】:

我有一个 p:对话框。我的意图是使用 p:datagrid 创建一个列表,当用户单击一个项目时,此对话框将打开并显示其详细信息。请考虑展示中的 p:datagrid 示例。但是,目前它在 IE 中运行良好,但在 Chrome 中却不行。如果我定义“modal=true”,那么浏览器会变黑,但不会出现对话框。

<p:commandButton update=":form:sharePanel" value="Share" style="font-size: 10px" oncomplete="PF('dlg').show()" rendered="false">
                                <f:setPropertyActionListener target="#{shareController.current}" value="#{status}" />
                            </p:commandButton>

<p:dialog widgetVar="dlg" resizable="false" id="sharePanel" styleClass="no-border" modal="true">  
                <h:outputText value="#{shareController.current.url.url}" /> 
                <h:panelGrid columns="3">                            
                    <p:dataGrid value="#{shareController.current.url.NLinkList}" var="nshare" columns="1" rendered="#{shareController.current.url.NLinkList.size() > 0}">
                        <h:panelGroup styleClass="tag noun">
                            <h:outputText value="#{nshare.noun}" />
                        </h:panelGroup>
                    </p:dataGrid>
                    <p:dataGrid value="#{shareController.current.url.VLinkList}" var="vshare" columns="1" rendered="#{shareController.current.url.VLinkList.size() > 0}">
                        <h:panelGroup styleClass="tag verb">
                            <h:outputText value="#{vshare.verb}" />
                        </h:panelGroup>
                    </p:dataGrid>
                    <p:dataGrid value="#{shareController.current.url.PLinkList}" var="pshare" columns="1" rendered="#{shareController.current.url.PLinkList.size() > 0}">
                        <h:panelGroup styleClass="tag prep">
                            <h:outputText value="#{pshare.prep}" />
                        </h:panelGroup>                    
                    </p:dataGrid>
                </h:panelGrid>
            </p:dialog>

这里有什么问题?

【问题讨论】:

    标签: jsf primefaces dialog


    【解决方案1】:

    如果您使用 4.0 之前的 Primefaces 版本,请使用 dlg.show() 而不是 PF('dlg').show()

    并尝试使用属性appendToBody="true" 将对话框附加到正文中,因为如果 Facelet 更复杂并且您使用的是布局,则对话框不会触发,某些浏览器只会出现模型。

    <p:dialog appendToBody="true" >
    

    【讨论】:

    • 事实证明,如果我将整个代码移动到 h:body 元素中,则会显示对话框。仍在试图找出原因。谢谢你的建议,我给你最好的答案
    • 声明 " 因为有时如果不包含 Primefaces js,则会加载 PF 函数。" 对原因的解释是完全错误的。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多