【问题标题】:Ajax not working with primefacesAjax 不适用于 primefaces
【发布时间】:2012-05-18 06:02:05
【问题描述】:

在我的 JSF 页面中,当我单击同一页面中的提交按钮时,我需要显示静态内容。但是当我点击<p:commandbutton> 时,页面中什么也没有出现。当我输入 ajax="false" 时,只发生了动作,但静态内容显示在新页面中。 在我的支持 bean 中,我使用了 Session 范围。我正在使用 JSF 2.0 和 Primefaces 3.2。

我的 JSF 页面。

<h:form>
  <h:panelGroup rendered="#{not license.showForm}">

    <p:panel header="License Key Request" >

      <h:panelGrid columns="2" >
        ..
        <h:outputText value="Bla bla"/>
        ..
        <h:outputText value="Bla Bla"  />
      </h:panelGrid>

      <TABLE>
       ..
       <h:outputLabel for="name" value="Requestor Name : *" />
        ..
       <p:inputText id="name" value="#{license.name}" required="true" requiredMessage="Name is required."/>
        ..
       <h:outputLabel for="company" value="Company : * " />
        ..
       <p:inputText id="company" value="#{license.company}" required="true" requiredMessage="Company is required."/>
        ..
      </table>

      <p:commandButton  value="Form" id="btnAdd" process="@form" 
      action="#{license.add}" />
        ..                                      
      </table>
   </p:panel>
 </h:panelGroup>

  <h:panelGroup rendered="#{license.showForm}" >

   <h:outputText value="Bla Bla"/>
   </h:panelGroup>
</h:form>

【问题讨论】:

  • 嗨 vinodt,欢迎来到 StackOverflow。这里最好的问题表明提问者在发布之前已经完成了他的研究。这是通过显示代码来完成的。考虑单击问题下方的编辑以对其进行编辑并添加相关代码。这不仅使您看起来像是尝试过,而且还有助于我们的社区在深入帮助您时有一个起点:)祝您好运!
  • 你想展示的静态内容到底是什么?

标签: ajax primefaces


【解决方案1】:

您的源代码有些混乱(例如,您有两个关闭的 table 标记)。但我假设如果单击按钮,您希望在底部显示 panelGroup。

最简单的方法是将update ="@form" 添加到您的命令按钮:

<p:commandButton value="Form" id="btnAdd" 
                 process="@form" update="@form"
                 action="#{license.add}" />

您不需要更新整个表单,只需要更新特定的组件。然后你需要给 panelGroup 一个 id 属性并使用这个属性而不是@form。但是,由于我不清楚您的命名容器是如何组织的,因此找到正确的相对 ID 可能会令人费解。

【讨论】:

    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2018-04-19
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多