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

对话框内的按钮:对话框未调用控制器方法

劳通
2023-03-14

我有一个标题中描述的问题。

问题的小说明如下:我有一个按钮,用来打开对话框。然后,在该对话框中,有一个按钮,可以在第一个对话框的顶部打开另一个对话框。单击第二个按钮后,我希望调用控制器中的方法,但什么也没发生。h:outputText中的值被正确读取,所以我猜这不是连接控制器的问题-

我用的是:

  • Spring web 3.1.2.发布
  • JSF 2.2.10
  • Primeface 5.1

代码:

豆。xml

<bean id="testController" class="test.TestController" />

测试控制器。JAVA

public class TestController implements Serializable
{
   private static final long serialVersionUID = 7028608421091861830L;

   private String test;

   public TestController()
   {
      test = "abc";
   }

   public void testMethod()
   {
      test = "cba";
   }

   public String getTest()
   {
      return test;
   }
}

测验xhtml

<h:panelGrid columns="1" cellpadding="5">
     <p:commandButton value="Basic" type="button" onclick="PF('dlg1').show();" />
  </h:panelGrid>

  <p:dialog widgetVar="dlg1">
     <h:outputText value="Resistance to PrimeFaces is futile!" />
     <h:panelGrid columns="1" cellpadding="5">
        <p:commandButton value="Basic" type="button" onclick="PF('dlg2').show();" />
     </h:panelGrid>

     <p:dialog widgetVar="dlg2">
        <h:outputText value="#{testController.test}" />
        <p:commandButton value="Call method" type="button" actionListener="#{testController.testMethod}" />
     </p:dialog>
  </p:dialog>

我尝试的是:

  • 添加appendToBody="true"到每个p:对话框
  • 从p:命令按钮改为p:按钮
  • 从actionListener变为action

但没有任何帮助。

我将非常感谢任何关于不调用给定方法的原因的帮助或建议。

共有2个答案

颛孙飞鸾
2023-03-14

好的。我想我找到了解决这个问题的方法。

问题似乎是:

type="button"

我从每个按钮的属性列表中删除了它,现在它甚至可以在没有h:form的情况下工作。谢谢你的帮助。

薛烨
2023-03-14

有3个问题。

>

  • 你在嵌套

    A

    A

    总而言之,这就是它应该看起来的样子:

    <h:form>
        <h:panelGrid columns="1" cellpadding="5">
            <p:commandButton value="Basic" type="button" onclick="PF('dlg1').show();" />
        </h:panelGrid>
    </h:form>
    
    <p:dialog widgetVar="dlg1">
        <h:form>
            <h:outputText value="Resistance to PrimeFaces is futile!" />
            <h:panelGrid columns="1" cellpadding="5">
                <p:commandButton value="Basic" type="button" onclick="PF('dlg2').show();" />
            </h:panelGrid>
        </h:form>
    </p:dialog>
    
    <p:dialog widgetVar="dlg2">
        <h:form>
            <h:outputText value="#{testController.test}" />
            <p:commandButton value="Call method" actionListener="#{testController.testMethod}" />
        </h:form>
    </p:dialog>
    

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

    • 我可以创建一个没有消极或积极按钮的对话框。这在特定行动后会摧毁它自己吗?

    • JSF2.2;PrimeFaces 5.3 我的目标是通过单击X按钮捕获用户关闭对话框,返回到父页面,以便刷新数据并更新表单。 我能够让p:remoteCommand调用DialogBean中的confirmAndCloseDialog()方法,但从未调用ParentBean中的onDialogReturn()方法。为什么不调用onDialogReturn?我能让它工作吗? 顺便说一句,如果用户以

    • 主要内容:文件选择对话框,颜色选择对话框,消息对话框在前面的章节中,我们花费了大量的时间讲解了 Tkinter 中常用基本控件,通过对这些控件的学习,我们对  GUI 开发有了基本的认识与掌握,一个完整的 GUI 程序就是由这些组件以合理、美观的布局方式构成的。 除了基本的控件之外,Tkinter 还提供了三种对话框控件: 文件选择对话框:filedailog 颜色选择对话框:colorchooser 消息对话框:messagebox 这些对话框的