2012-03-14 107 views
4

sortBy工作我下面这个例子:http://mkblog.exadel.com/2008/11/richfaces-built-in-sorting/不能得到RichFaces的4

就其称,箭头应该出现在头旁边,用户可以单击它来进行排序。

但我无法得到箭头出现。你帮助表示赞赏。

的代码我使用:

newwonder.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:a4j="http://richfaces.org/a4j" 
xmlns:c="http://java.sun.com/jsp/jstl/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:rich="http://richfaces.org/rich"> 
<h:head> 
<title>Requirement Workflow</title> 



</h:head> 
<h:body> 

<rich:dataTable value="#{newWondersBean.sevenNewWonders}" var="wonder"> 
    <rich:column sortBy="#{wonder.name}"> 
    <f:facet name="header">Name</f:facet> 
    <h:outputText value="#{wonder.name}" /> 
</rich:column> 
    <rich:column sortBy="#{wonder.location}"> 
    <f:facet name="header">Location</f:facet> 
    <h:outputText value="#{wonder.location}" /> 
    </rich:column> 
    <rich:column> 
    <f:facet name="header">Image</f:facet> 
<h:graphicImage url="#{wonder.imageUrl}" /> 
    </rich:column> 
    </rich:dataTable> 

    </h:body> 
    </html> 

NewWondersBean.java

 package wonder; 

     import java.util.ArrayList; 
     import javax.annotation.PostConstruct; 
     import javax.faces.bean.ManagedBean; 
     import javax.faces.bean.ViewScoped; 

     @ManagedBean 
     @ViewScoped 
     public class NewWondersBean { 

      private ArrayList <Wonder> sevenNewWonders = new ArrayList <Wonder>(); 

      @PostConstruct 
      public void init() { 
      sevenNewWonders = new ArrayList <Wonder>(); 
      sevenNewWonders.add(new Wonder("Chichen Itza", "Mexico", "http://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Chichen-Itza-Castillo-Seen-From-East.JPG/90px-Chichen-Itza-Castillo-Seen-From-East.JPG")); 
      sevenNewWonders.add(new Wonder("Christ the Redeemer", "Brazil", "http://upload.wikimedia.org/wikipedia/commons/thumb/5/50/CorcovadofotoRJ.jpg/90px-CorcovadofotoRJ.jpg")); 
      sevenNewWonders.add(new Wonder("Colosseum", "Italy", "http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Colosseum_in_Rome%2C_Italy_-_April_2007.jpg/90px-Colosseum_in_Rome%2C_Italy_-_April_2007.jpg")); 
      sevenNewWonders.add(new Wonder("Great Wall of China", "China", "http://upload.wikimedia.org/wikipedia/commons/thumb/1/16/GreatWallNearBeijingWinter.jpg/90px-GreatWallNearBeijingWinter.jpg")); 
      sevenNewWonders.add(new Wonder("Machu Picchu", "Peru", "http://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Before_Machu_Picchu.jpg/90px-Before_Machu_Picchu.jpg")); 
      sevenNewWonders.add(new Wonder("Petra", "Jordan", "http://upload.wikimedia.org/wikipedia/commons/thumb/0/06/PetraMonastery.JPG/90px-PetraMonastery.JPG")); 
      sevenNewWonders.add(new Wonder("Taj Mahal", "India", "http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Taj_Mahal_in_March_2004.jpg/90px-Taj_Mahal_in_March_2004.jpg")); 
      } 

      public ArrayList <Wonder> getSevenNewWonders() { 
      return sevenNewWonders; 
      } 
     } 

Wonder.java

  package wonder; 

      public class Wonder { 

       public Wonder(String string, String string2, String string3) { 
        // TODO Auto-generated constructor stub 
        this.name = string; 
        this.location = string2; 
        this.imageUrl = string3; 
       } 

       public void setName(String name) { 
        this.name = name; 
       } 
       public String getName() { 
        return name; 
       } 

       public void setLocation(String location) { 
        this.location = location; 
       } 

       public String getLocation() { 
        return location; 
       } 

       public void setImageUrl(String imageUrl) { 
        this.imageUrl = imageUrl; 
       } 

       public String getImageUrl() { 
        return imageUrl; 
       } 

       private String name; 
       private String location; 
       private String imageUrl; 

      } 

回答

6

据我了解排序已经改变与Richf王牌4.

您将需要有一个Map <String, SortOrder>,你需要添加一个属性到你的rich:列sortOrders是上面的Map和vendor是给定列的关键。

sortOrder="#{bean.sortsOrders['vendor']}"> 

之后的排序是非常自动的魔法,但图标的也没有RichFaces的4所以你必须手动添加基础上,SortOrder的枚举每个列的值相同。

我认为这是一个痛苦,从3.x倒退,但这是需要排序工作。

您可以随时检查出RichFaces的展示网站获取更多信息

http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=extendedDataTable&sample=edt-sorting&skin=blueSky

编辑:(2013年1月)

随着即将到来的RichFaces被回加4.3自动排序,并会包括箭头和什么不是。上面的链接应该仍然有一个很好的选择。

编辑:(2013年9月) RF现在在版本4.3.4和自动排序仍然没有回来。它只适用于rich:extendedDataTable,但不适用于rich:dataTable

+0

我的理解是,即使使用rich:dataTable,排序也可以在4.3.x中运行。我的项目仍在使用4.2.x所以我无法完全测试它,但Richfaces展示了它在常规数据表上的工作。 – Tristan 2013-10-11 14:52:16

+0

在4.3.4中的dataTables测试之后sortOrder仍然是必需的。 – Tristan 2013-10-11 15:32:27