【问题标题】:Change order of column display logic in JSP/JSFJSP/JSF中列显示逻辑的改变顺序
【发布时间】:2012-11-07 16:23:50
【问题描述】:

我有问题。

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

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

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

例如。当前月份是 11 月,因此要显示的列是 11 月、12 月、1 月、2 月……直到 10 月。所以现在列的顺序会根据当前月份发生变化。我该怎么做?任何有关逻辑的帮助将不胜感激?

问候

【问题讨论】:

  • 分享你当前的实现。

标签: java jsp jsf


【解决方案1】:

您是否正在寻找类似的东西。

<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>

你的 bean 会是这样的。

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"

【讨论】:

  • 我觉得这看起来不错。让我尝试与此类似并更新您。感谢您的建议和帮助
猜你喜欢
  • 1970-01-01
  • 2016-05-01
  • 2016-01-31
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 2020-04-02
  • 2012-01-10
相关资源
最近更新 更多