如何防止p:commandButton刷新p:tabView

时间:2014-01-23 16:00:40

标签: forms jsf jsf-2 primefaces jsf-1.2

我的xhtml页面采用以下格式:

    <h:form>
      <p:dialog widgetVar="presentDiag" modal="true" closable="true" header="Liste" maximizable="false" dynamic="true">

            <p:commandButton value="Submit" id="submit" actionListener="bean.add()"/>
      </p:dialog>
    </h:form>
    <h:form>
       <p:tabView>
            <p:tab title="....">
            </p:tab>
            <p:tab title="....">
            </p:tab>
            <p:tab title="....">
           </p:tab>
           </p:tabView>
       </h:form>

当我点击提交按钮时,所选标签更改为第一个标签

1 个答案:

答案 0 :(得分:0)

如果您想更新表单然后从中排除某些内容,最简单的方法就是使用PrimeFaces selectors,如下所示:

<h:form id="form">
  <p:dialog widgetVar="presentDiag" modal="true" closable="true" header="Liste" maximizable="false" dynamic="true">
        <p:commandButton value="Submit" id="submit" actionListener="bean.add()" update="@(form :not(.tab-view))"/>
  </p:dialog>
  <h:panelGroup styleClass="tab-view" >
       <p:tabView>
           <p:tab title="....">
           </p:tab>
           <p:tab title="....">
           </p:tab>
           <p:tab title="....">
           </p:tab>
       </p:tabView>
   </h:panelGroup>
 </h:form>

您始终可以使用widgetVar属性重新打开所需的标签。

<p:tabView widgetVar="myTab"> .... </p:tabView>
 .
 .
 .
 <p:commandButton value="Submit" id="submit" actionListener="bean.add()" update="someId" oncomplete="myTab.select(2);"/>

但最好的办法是不要先关闭它。