Jquery p:对话框中的p:commandButton不工作

Jquery p:对话框中的p:commandButton不工作,jquery,jsf-2,primefaces,dialog,java-ee-6,Jquery,Jsf 2,Primefaces,Dialog,Java Ee 6,我想使用一个包含一些commandbutton的p:dialog,但是我不能从commandbutton调用我的bean,也不知道为什么 在xhtml页面上有两个表单,第一个表单包含一些内容,如面板、面板网格、按钮等。 第二个表单只包含我的对话框 我的beanHandler(beanHandler)是ViewAccessScope。 这个xhtml页面上的所有东西都在工作,只有我的p:panel不工作 <?xml version="1.0" encoding="UTF-8"?>

我想使用一个包含一些commandbutton的p:dialog,但是我不能从commandbutton调用我的bean,也不知道为什么

在xhtml页面上有两个表单,第一个表单包含一些内容,如面板、面板网格、按钮等。 第二个表单只包含我的对话框

我的beanHandler(beanHandler)是ViewAccessScope。 这个xhtml页面上的所有东西都在工作,只有我的p:panel不工作

    <?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:m="http://java.sun.com/jsf/composite/components/mmnet">

 <h:form id="activityForm"> 
    <p:panel >

...
...

   <f:facet name="footer">

...

   <p:commandButton id="readyButton"
                                action="#{beanHandler.toggleStatus()}"
                                rendered="#{beanHandler.ready}"
                                value="#{labels.erledigt}"
                                icon="ui-icon-check"
                                update="@form :dialogForm"
                                onclick="dlg.show()">
               <p:tooltip for="readyButton" style="width:300px;">
                            <h:outputText value="#{messages.adviceWfEventActivityFinish}" />
              </p:tooltip>
   </p:commandButton>
          </f:facet>     

  </p:panel>

</h:form>

<h:form id="dialogForm">
    <p:outputPanel id="justAPanel">

        <p:dialog header="Ticket schließen?" widgetVar="dlg" resizable="false" appendToBody="true" rendered="#{beanHandler.lastActivity}" id="dlg"> 

            <h:panelGrid columns="2" style="margin-bottom:10px"> 
                <h:outputLabel value="Soll das Ticket geschlossen werden?" />
                <p:spacer />

                <p:commandButton id="yesButton"
                                               value="#{labels.ja}" update=":workflowContentPanel"
                                               onclick="dlg.hide()"
                                              action="#{beanHandler.closeTicket()}" process="@form"/> 

                <p:commandButton id="noButton" value="#{labels.nein}" update=":workflowContentPanel" onclick="dlg.hide()"/> 
            </h:panelGrid> 

        </p:dialog> 
        </p:outputPanel>
    </h:form>

</ui:composition>

...
...
...
如果我使用如上所示的页面,则按钮单击上不会出现p:面板。如果我改变这部分代码

<p:dialog header="Ticket schließen?" widgetVar="dlg" resizable="false" appendToBody="true" rendered="#{beanHandler.lastActivity}" id="dlg">


(将属性改为true)显示对话框,但我的按钮不起作用(不可能调用bean)。 如果我不知道为什么会这样

有人有主意吗


使用属性
appendToBody
将实际对话框直接附加到
body
-元素。通过这一点,它不再是形式了。没有表单,就不可能有Bean调用。可能的解决办法:

  • 将另一个
    放入
    p:dialog
  • 相应地更改
    appendToBody
    属性,可能将其设置为
    false
    ,并将
    p:dialog
    移动到另一个位置(直接作为现有
    的子对象)

希望它有帮助…

我应该使用嵌套表单?当然不是!或者,是这样的:Primefaces将对话框附加到页面主体(通过Firebug等检查生成的HTML)。所以它在表单标签之外。最好的解决方案是跳过
appendToBody
属性,并手动将
p:dialog
设置为表单标记的直接子级。另一个解决方案是,是的,添加另一个
@LStrike成功了吗?目前没有成功。我把这个话题转移到自己身上,以后再解决,而不是现在。我会回来告诉你是否有新的东西。谢谢你到目前为止的帮助。我已经想出了一个解决办法。我将对话框移动到另一个页面(起始页面),并将其放在我的容器外,在那里我可以做所有其他事情。我用自己的方式包装了它,一切都很好。
<p:dialog header="Ticket schließen?" widgetVar="dlg" resizable="false" appendToBody="true" rendered="true" id="dlg">