Jquery p:对话框中的p:commandButton不工作
我想使用一个包含一些commandbutton的p:dialog,但是我不能从commandbutton调用我的bean,也不知道为什么 在xhtml页面上有两个表单,第一个表单包含一些内容,如面板、面板网格、按钮等。 第二个表单只包含我的对话框 我的beanHandler(beanHandler)是ViewAccessScope。 这个xhtml页面上的所有东西都在工作,只有我的p:panel不工作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"?>
<?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">