2014-05-05 34 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