Не могу заставить работать sortBy в RichFaces 4 - PullRequest
4 голосов
/ 14 марта 2012

Я следую этому примеру: http://mkblog.exadel.com/2008/11/richfaces-built-in-sorting/

это говорит о том, что стрелки должны появиться рядом с заголовком, и пользователь может щелкнуть его, чтобы отсортировать.

Но я не могу заставить стрелу появиться.Вы помогли оценили.

Код, который я использую:

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;

            }

1 Ответ

6 голосов
/ 14 марта 2012

Насколько я понимаю, сортировка изменилась с Richfaces 4.

Вам понадобится Map <String, SortOrder>, и вам нужно будет добавить атрибут к вашему столбцу rich:, где sortOrders - карта выше, а поставщик - ключ для данного столбца.

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

После этой сортировки в значительной степени происходит автоматическое волшебство, но значки также отсутствуют в Richfaces 4, поэтому вам придется вручную добавлять их на основе значения перечисления SortOrder для каждого столбца.

Я думаю, что это боль и шаг назад от 3.x, но это то, что нужно для работы сортировки.

Для получения дополнительной информации вы всегда можете посетить сайт RichFaces Showcase

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

РЕДАКТИРОВАТЬ: (январь 2013 г.)

В новой версии RichFaces 4.3 добавлена ​​автоматическая сортировка, которая будет включать стрелки, а что нет. Ссылка выше должна иметь хороший вариант для этого.

РЕДАКТИРОВАТЬ: (сентябрь 2013 г.) RF сейчас в версии 4.3.4 и автоматическая сортировка еще не вернулась. Он работает только для rich: extendedDataTable, но не для rich: dataTable

...