1

私のJSFページには、静的コンテンツを表示する必要がある同じページの送信ボタンをクリックしたときにフォームがあります。しかし、クリック<p:commandbutton>してもページに何も表示されません。ajax="false" を配置すると、アクションのみが実行されますが、静的コンテンツは新しいページに表示されます。私の Backing 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>
4

1 に答える 1

2

あなたのソース コードはやや混乱しています (たとえば、2 つの終了tableタグがあります)。しかし、ボタンがクリックされた場合、一番下に panelGroup を表示したいと思います。

update ="@form"最も簡単な方法は、commandButtonに を追加することです。

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

フォーム全体を更新する必要はなく、特定のコンポーネントのみを更新する必要があります。次に、 panelGroup に id 属性を指定し、 の代わりにこの属性を使用する必要があります@form。ただし、ネーミング コンテナーがどのように構成されているかは明確ではないため、正しい相対 ID を見つけるのが難しい場合があります。

于 2012-05-18T06:58:13.370 に答える