在JSP / JSF中更改列显示逻辑的顺序

时间:2012-11-19 17:29:30

标签: java jsp jsf

我有疑问。

我有一个数据库列,如jan,feb,mar到dec,每列都有不同的值。

我将这些值作为jan,feb等加载到Java对象中。在UI,JSP中,我遍历此对象列表并将列显示为jan,feb等。

但现在我的要求是根据当月显示。

例如。当前月份是11月,因此要显示的列是11月,12月,1月,2月......直到10月。所以现在列的顺序根据当前月份而变化。我该怎么办?对逻辑的任何帮助都会受到赞赏吗?

此致

1 个答案:

答案 0 :(得分:0)

你在找这样的东西。

<rich:dataTable value="#{aBean.aList}" var="_var">
    <c:forEach var="column" items="#{myBean.columnsList}" >
      <rich:column>
         <f:facet name="header">#{column.headerName}</f:facet>
         Hello!
      </rich:column>
    </c:forEach>
</rich:dataTable>

你的豆子会是这样的。

public class MyBean {
  List<String> months = new ArrayList<String>();
  List<Column> columnsList = new ArrayList<Column>();
  String currentMonth = "Apr";

  public MyBean() {//Adding months
    months.add("Jan");
    months.add("Feb");
    months.add("Mar");
    months.add("Apr");
    months.add("May");
  }

  public List<Column> getColumnsList() {//Building columns
    for(int i = months.indexOf(currentMonth); ;) {
      Column c = new Column(months.get(i));
      columnsList.add(c);

      if(i == months.size() - 1) {
        i = 0;
      } else {
        i++;
      }
      if(i == months.indexOf(currentMonth)) {
        break;
      }
    }
    return columnsList;
  }


  public class Column {
    String headerName;
    Column(String headerName) {
      this.headerName = headerName;
    }
    public String getHeaderName() {
      return headerName;
    }
  }
}

更改变量currentMonth的值并检查其是否符合您的预期。

编辑:

<小时/> 您必须导入名称空间xmlns:c="http://java.sun.com/jstl/core"