2013-01-09 28 views
6

Tôi cần làm mới p: tabView sau khi thực hiện một hành động (để hiển thị thông báo lỗi, v.v.).Làm cách nào để cập nhật chỉ tab hoạt động của p: tabView?

Các trường để xác thực nằm trên các tab khác nhau. Khi tôi cập nhật toàn bộ tabView, đây là hành vi lỗi của khóa học, bởi vì trong PrimeFaces các tab ẩn sẽ không được cập nhật (vì các trường chỉnh sửa là vô hình và khi chúng được làm mới, chúng sẽ mất giá trị của chúng, ví dụ p: autoComplete là nulled).

Vì vậy, tôi chỉ nên cập nhật tab hoạt động, nhưng cách nhắm mục tiêu với thuộc tính cập nhật của commandButton chỉ tab hoạt động, không phải toàn bộ p: tabView?

Trả lời

4

tôi đã thực hiện một ví dụ nhỏ:

<h:form id="form"> 
    <p:tabView id="tabview"> 
     <p:tab title="tab 1"> 
      <p:commandButton value="update" update="@parent" /> 
     </p:tab> 
     <p:tab title="tab 2"> 
      <p:outputPanel id="tab2"> 
       <p:commandButton value="update" update=":form:tabview:tab2" /> 
      </p:outputPanel> 
     </p:tab> 
    </p:tabView> 
</h:form> 

Tuy nhiên, khi tôi cập nhật p:tab theo ID hoặc bằng cách sử dụng @parent (như tôi làm trong tab 1) (div) tab bị xóa, lạ. .. Cách giải quyết khác là bao bọc nội dung của tab trong vùng chứa như tôi đã làm trong tab 2.


HA! Tìm thấy lý do tại sao bạn không thể cập nhật một tab trực tiếp: https://code.google.com/p/primefaces/issues/detail?id=3518

Ví dụ với nút ngoài TabView:

<h:form id="form"> 
    <p:tabView id="tabview" binding="#{tabView}"> 
     <p:ajax event="tabChange" update=":form:button" /> 
     <p:tab title="tab 1"> 
      <p:outputPanel id="tab0"> 
       <p:panel>text</p:panel> 
      </p:outputPanel> 
     </p:tab> 
     <p:tab title="tab 2"> 
      <p:outputPanel id="tab1"> 
       <p:panel>text</p:panel> 
      </p:outputPanel> 
     </p:tab> 
    </p:tabView> 
    <p:commandButton id="button" value="update" 
     update=":form:tabview:tab#{tabView.activeIndex}" /> 
</h:form> 
+0

Nhưng tôi đã không viết các nút bên trong tab, và họ là không phải trong trường hợp của tôi. –

+0

Và cập nhật toàn bộ tabView làm cho các giá trị trong các tab ẩn được khôi phục thành rỗng –

+0

@lechlukasz xem cập nhật bằng nút bên ngoài tabview ;-) – siebz0r

Các vấn đề liên quan