Categories
RichFaces教程

RichFaces-迭代组件

RichFaces-迭代组件


在前面的章节中,我们了解了不同的输入和输出组件。在本章中,我们将学习如何迭代网站中的不同数据结构。

<rich:dataTable>

此标记用于呈现网站中的表格。在下面的示例中,我们将呈现一个主题表以及专业水平。

<?xml version = '1.0' encoding = 'UTF-8' ??>    
   
   
      
      <title>Rich Data Table</title>   
      
    
      
      <form>   
         <datatable value="#{subject.subjectListObj}" var="record">   
            <facet name="header">   
               <outputtext value="My Profile"></outputtext>   
            </facet>   
            
            <column>   
               <facet name="header">Subject Name</facet>   
               <outputtext value="#{record.subjectName}"></outputtext> 
            </column> 
            
            <column>    
               <facet name="header">efficiency Level</facet>   
               <outputtext value="#{record.efficiency}"></outputtext> 
            </column>   
         </datatable>
      </form>   
   
   

我们需要相应地更改subject.java来呈现列表。以下是subject.java的示例。

import java.util.ArrayList; 
import java.util.List; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.RequestScoped;   

@ManagedBean 
@RequestScoped 

public class Subject { 
   String SubjectName; 
   private String efficiency; 
   
   private List<subject> subjectListObj=new ArrayList<>(); 
      public Subject() { 
   }  
   public Subject(String SubjectName,String efficiency ) { 
      this.SubjectName = SubjectName; 
      this.efficiency= efficiency; 
   } 
   public String getSubjectName() { 
      return SubjectName; 
   } 
   public void setSubjectName(String SubjectName) { 
      this.SubjectName = SubjectName; 
   } 
   public List<subject> getSubjectListObj() {
      subjectListObj.add(new Subject("JAVA","Expert"));   
      subjectListObj.add(new Subject("DOTNET","NA"));   
      subjectListObj.add(new Subject("JAVA Script","Expert"));   
      subjectListObj.add(new Subject("Web Service","Expert"));   
      subjectListObj.add(new Subject("Consulting","Expert"));   
      return subjectListObj; 
   } 
   public void setSubjectListObj(List<subject> subjectListObj) { 
      this.subjectListObj = subjectListObj; 
   } 
   public String getEfficiency() { 
      return efficiency; 
   } 
   public void setEfficiency(String efficiency) { 
      this.efficiency = efficiency; 
   } 
}    
</subject></subject></subject>

上面的示例将在浏览器中生成以下输出。

丰富的数据表

<rich:dataDefinitionList>

这是用于从模型生成数据定义的标签。自从RichFaces 4发明以来,JBoss不支持此标签。如果您仍在使用RichFaces 3,则可以按以下方式使用此标签。

<datadefinitionlist var="car" value="#{dataTableScrollerBean.allCars}" rows="5" first="4" title="Cars">  
   
   <facet name="term">  
      <outputtext value="#{car.make} #{car.model}"></outputtext>  
   </facet>  
   
   <outputtext value="Price:" styleclass="label"></outputtext>  
   <outputtext value="#{car.price}"></outputtext><br>  
   <outputtext value="Mileage:" styleclass="label"></outputtext>  
   <outputtext value="#{car.mileage}"></outputtext><br>  
</datadefinitionlist> 

在上面的示例中,“ dataTableScrollerBean”是一个Java类,用于生成汽车的不同值。这类似于之前的标签,在该标签中,我们使用<datatable>标签填充了一堆对象值。

<rich:dataOrderedList>

RichFaces 4从RichFaces 3提出了广泛的要求。<dataOrderedList>是用于以有序方式呈现列表的标记。在RichFaces 4中也抑制了这一点,因为如果使用Java完成,则对对象或列表的排序要容易得多,并且耗时少。如果您的应用程序使用RichFaces 3,则可以按以下方式使用此标记。

<panel style="width:500px"> 
   <facet name="header"> 
      Using rich:dataOrderedList 
   </facet> 
   
   <dataorderedlist value="#{airlinesBean.airlines}" var="air"> 
      #{air.name}, #{air.code} 
   </dataorderedlist> 
</panel>

在上面的示例中,“ airlinesBean”是一个Java Bean类,其方法名为“ airlinesBean()”。此方法返回“ air”类型的对象。以后,我们可以使用该航空对象以表格格式填充不同的属性。

<rich:dataList>

就像标签名称所暗示的那样,此标签将用于在浏览器中呈现无序列表。但是,像<orderedList>一样,此标记在最新版本的RichFaces中也被取消。我们可以通过以下方式使用<a4j:Repeat>和<rich:dataTable>标记轻松地将列表呈现到浏览器中。

<repeat value="#{managedBean.subjectList}" var="sub"> 
   <outputtext value="#{sub}"></outputtext>   
</repeat> 

在上面的示例中,我们呈现了一个列表,该列表是名为“ subjectList()”的方法的输出。如果您的应用程序是在RichFaces 3中构建的,则可以按以下方式使用此标记。

<panel style="width:500px"> 
   <facet name="header"> 
      Using rich:dataList 
   </facet> 
   
   <datalist value="#{airlinesBean.airlines}" var="air"> 
      #{air.name}, #{air.code} 
   </datalist>
</panel>   

<rich:dataGrid>

使用<datatable>标记,您可以将列表呈现为表格,但是,<dataGrid>将帮助您呈现对象或列表。在前面的<rich:datatable>示例中,只需按如下所示更改xhtml页面,然后查看该页面的输出。

<?xml version = '1.0' encoding = 'UTF-8' ??>    
   
   
      
      <title>Rich Data Table</title>   
      
    
      
      <form>   
         <panel> 
            <datagrid value="#{subject.subjectListObj}" var="record" columns="2" elements="4" first="1">   
               
               <facet name="header">   
                  <outputtext value="My Profile"></outputtext>   
               </facet>   
               
               <panel> 
                  <column>   
                     <facet name="header">Subject Name</facet>   
                     <outputtext value="#{record.subjectName}"></outputtext> 
                  </column>  
                  
                  <column>    
                     <facet name="header">efficiency Level</facet>   
                     <outputtext value="#{record.efficiency}"></outputtext> 
                  </column> 
               </panel> 
               
            </datagrid>  
         </panel> 
      </form>   
    
   
             

上面的代码将在浏览器中产生以下输出。

丰富的数据网格

<rich:datascroller>

该标签有助于在填充表格数据时创建滚动条。它与JSF的分页功能非常相似。以以下方式修改前面的dataTable示例。

<?xml version = '1.0' encoding = 'UTF-8' ??>    
   
   
   
      <title>Rich Data Table</title>   
      
    
      
      <form>   
         <datatable value="#{subject.subjectListObj}" var="record" rows="3" id="MyTable">   
            
            <facet name="header">   
               <outputtext value="My Profile"></outputtext>   
            </facet>   
            
            <column>   
               <facet name="header">Subject Name</facet>   
               <outputtext value="#{record.subjectName}"></outputtext> 
            </column> 
            
            <column>    
               <facet name="header">efficiency Level</facet>   
               <outputtext value="#{record.efficiency}"></outputtext> 
            </column>   
         </datatable> 
         
         <datascroller for="MyTable" maxpages="3">   
            <facet name="first">   
               <outputtext value="1"></outputtext>   
            </facet>   
            
            <facet name="last">   
               <outputtext value="eof"></outputtext>   
            </facet>   
         </datascroller> 
      </form>   
   
   
  

在上面的示例中,您可以添加样式以获得良好的外观。我们已经实现了具有不同构面值的单独的<dataScroller>标签。以下是上述文件的输出。更新样式透视属性,以同步表和数据滚动器。

丰富的数据滚动条

error: 内容受到保护 !!