当前位置: 首页 > 知识库问答 >
问题:

p:命令按钮在p:对话框不工作

邢弘业
2023-03-14

我想使用一个p:对话框,其中包含一些commandbutton,但我不能从命令按钮调用我的bean,也不知道为什么。

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

我的beanHandler(beanHandler)是ViewAccessScoped。此xhtml页面上的所有内容都在工作,只有我的p:面板不工作

    <?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">

<p:dialog header="Ticket schließen?" widgetVar="dlg" resizable="false" appendToBody="true" rendered="true" id="dlg">

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

有人有主意吗?

当做

共有1个答案

颜杰
2023-03-14

使用属性appendTobody,您可以将实际对话框直接附加到body-元素。通过它,它不再处于表单中。如果周围没有表单,就不可能进行Bean调用。可能的解决方案

  • 放置另一个<代码>

希望对你有帮助。。。

 类似资料:
  • 我面临commandButton的问题,它只有在类型为submit时才起作用。有没有人可以看一下,让我知道是否有解决办法?下面的代码非常简单,并有足够的建议来说明我需要什么。方法test()未执行。方法runSubmit已成功执行。 我需要测试方法在没有提交的情况下执行,因为原始页面确实在提交期间执行了验证,test()方法必须在没有提交的情况下执行,因为这是提交之前的一个初步操作。 我正在使用P

  • 描述 (Description) 字符类[\p{L}&&[^\p{Lu}]]匹配除大写字母之外的任何字符。 例子 (Example) 以下示例显示了Unicode字符类匹配的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class UnicodeCh

  • p

    P is for peer-to-peer networking with browsers P is a small framework used to create browser-to-browser networks (as opposed to just a connection). With P, you can: Connect to other browsers using a s

  • P*

    P* (P-star)是一种网站编程语言,其中包括了常用的任务像模板处理以及数据查询。它突出的特性有用预处理语句来访问MySQL数据库;HTML模板;标准的计数,变量,函数和结构;JSON输出,GET和POST。

  • 我有一个JFrame调用一个新的JDialog,这个JDialog有一个关闭它的按钮。 当JDialog关闭时,JFrame应该重新绘制。但是当我用按钮关闭JDialog时,什么也不会发生,当我用经典的“X”按钮关闭时,就不会发生这种情况。 这是来自JFrame的windowListener: 这里是JDialog中关闭JDialog的按钮的代码: 就像我说的,监听器中的JFrame需要在JDia

  • 此对话框允许在运行中切换“结束时”选项而不中断压缩压缩、解压或测试操作,以便您能在操作完成后关闭 PC 电源,休眠,睡眠或重启。 对于压缩操作,在这里可以改变压缩方式,但是 WinRAR 不能在此对话框转换到"存储"模式。