2014-05-05 35 views
0

我已經在jsf + icefaces中創建了selectALL複選框功能。我已經實現了功能,比如當我檢查selectAll複選框時,它將選中所有頁面上的所有複選框。但是當我做分頁,如果我做了檢查/取消選中選擇所有複選框,那麼它只爲該網頁的作品不acorss所有的網頁。我的意思是行復選框的狀態不一致。我試圖PhaseListener在解決這一點,但沒有運氣..任何人都可以提出我的解決方案..如何刷新分頁後的jsf頁面

我的代碼:JSF

<ace:column id="checkBox"> 
           <f:facet name="header"> 
            <h:outputLabel> 
             <ice:selectBooleanCheckbox id="selectAllID" 
              value="#{shipBean.checkAll}" 
              valueChangeListener="#{shipBean.getCheck}" 
              partialSubmit="true" /> 
            </h:outputLabel> 
           </f:facet> 
           <ice:selectBooleanCheckbox id="selectOne" 
            value="#{freight.checkBox}"> 

的java:

if (shipTrackingData != null) { 

       if (shipTrackingData.getCheckAll()) { 

        for (ShipTrackBean check : shipTrackingData 
          .getShipTrackList()) { 
         check.setCheckBox(true); 
        } 

       } else { 
        for (ShipTrackBean check : shipTrackingData 
          .getShipTrackList()) { 

         check.setCheckBox(false); 
        } 
       } 
      } 

謝謝..

+0

Managed Bean的範圍是什麼。我認爲你應該在java代碼中獲得一致的複選框值,但它們可能不會反映在UI上。如果您在上一頁或下一頁時可以使用Ajax功能,並且如果您可以通過讀取應該具有一致值的bean來呈現值,則可能會有效。 – Walker

+0

@Manish感謝您的回覆..它是會話範圍的manged豆也是我與viewscoped一起嘗試以及.. – vinod

回答

0

我已經測試過這個JSF應用程序的代碼,我有三個頁面:

index_1.xhtml index_2.xhtml index_3.xhtml

@ManagedBean 
@SessionScoped 
public class pross { 
    private boolean challval=false; 
    private boolean chval1=false; 
    private boolean chval2=false; 
    private boolean chval3=false; 
.. getters and setters.... 
} 

在每一頁我創建了兩個複選框,其中之一是,如果在其中任何一箇中選出的所有網頁中選出,但複選框與所有頁面的相同值(challval)相關。 還有另一個頁面本身的複選框,每個複選框一個(chval1,chval2,chval3)。

爲了測試這個,我爲每個頁面編寫了這個xhtml代碼,但是您需要根據每個頁面更改值,這裏是index_1.xhtml的代碼,您需要更改「轉到」鏈接以便能夠訪問其他網頁:

<h:body> 
     <h:form> 
     Hello, Test checkboxes: 
     <br /> 
     Select this page: <h:selectBooleanCheckbox value="#{pross.chval1}" > 
      <f:ajax render="outthis outall"/> 
     </h:selectBooleanCheckbox> 
     This page select: <h:outputText id="outthis" value="#{pross.chval1}"/> 
     <br/> 
     Select all pages: <h:selectBooleanCheckbox value="#{pross.challval}"> 
      <f:ajax render="outthis outall"/> 
     </h:selectBooleanCheckbox> 
     all pages select: <h:outputText id="outall" value="#{pross.challval}"/> 
     <br/> 
     <h:link outcome="index_2" value="Go to page 2" /> 
     <br/> 
     <h:link outcome="index_3" value="Go to page 3" /> 
     </h:form> 
    </h:body> 

我這裏看看有沒有問題,而在一個頁面當我檢查「全選」,它仍然是在別人籤,我認爲這個想法是連接「全選」複選框以所有頁面的bean值相同。 希望這是有用的,謝謝。

+0

@Tiyab感謝您的答覆..但我用一個數據表與分頁與單個xhtml頁面。在這裏,當你做分頁選擇所有功能失敗..你是對的,它應該採取相同的bean值.. – vinod