Если-иначе (вложенное) или когда условие в JSTL

У меня есть программа, которая заполняет таблицу, и в зависимости от типа значения в каждой ячейке я меняю форматирование — например, проценты, десятичные разряды, группировку и т. д.

У меня есть таблица, которая является представлением по умолчанию, и я позволяю пользователю фильтровать эти результаты, вводя номер документа, а затем таблица изменяется, добавляя 2 столбца - номер документа и соответствующее имя документа.

Итак, если число полученных столбцов равно 10, то какое-то поведение. Если если это 12, то какое-то другое поведение.

Date       |   Documents Bought | Documents Started  | Column 4    | Column 5

03/24/2013 |   1000.0           |    2,000           |    1,500    | 2,500

является урезанной версией представления по умолчанию.

Date      |  Document ID| Document Name | Documents Bought | Documents Started  | Column 4 | Column 5

03/24/2013|    55       |     Waiver    |  10              |    20              | 4        | 5

Я использую ту же программу Java для вызова запросов и заполнения таблиц. Я написал следующее в JSP.

  <c:forEach var="row" items="${docFunnel}">
                            <tr>
                                <c:forEach var="cell" items="${row}"
                    varStatus="rowIdx">

                        <c:choose>

                        <c:when
                            test="${rowIdx.count==17}">

                                        </c:when>
                                        <c:when
                            test="${rowIdx.index==2}">
                                            <td>${cell}</td>
                                        </c:when>

                                        <c:when
                            test="${rowIdx.index==1}">
                                            <td><fmt:formatNumber
                                    type="number" maxFractionDigits="3" groupingUsed="false"
                                    value="${cell}" /></td>
                                        </c:when>

                                        <c:otherwise>
                                        <c:choose>

                                        <c:when
                                    test="${rowIdx.index==0}">
                                            <td>${cell}</td>
                                        </c:when>

                                        <c:otherwise>

                                                <td>
                                                    <fmt:formatNumber
                                            type="number" maxFractionDigits="3" groupingUsed="true"
                                            value="${cell}" />
                                                </td>


                                            </c:otherwise>
                                            </c:choose>
                                             </c:otherwise>

                                    </c:choose>

                                </c:forEach>
                            </tr>
                        </c:forEach>

Сначала я разработал его с учетом первого случая, и я просто проверял, когда он дошел до индекса 0, чтобы напечатать ячейку как есть или использовать formatNumber. С фильтрацией и последующим добавлением двух столбцов мне пришлось переписать JSTL, и вторая версия работала идеально, но исходная версия не была полностью неправильной, группировка не отображалась, а к столбцу добавлялся «.0». номер в 3-м столбце, а группировка не отображается для 2-го столбца. С остальными столбцами в обоих случаях все в порядке. Я знаю, что это просто:

if(no. of columns == 12)
   if(index == 0 || index == 2)
       no format   //print date and name of document as is
  if(index == 1)
      numberFormat with no grouping used //since this indicates document ID

else if(no. of columns == 10)
  if(index == 0)
     no format  //print date as is

else
  numberFormat with grouping //regardless of the number of columns

Но я не понимаю это правильно в JSTL. Что я делаю не так? Пожалуйста, дайте мне знать и предложите некоторые улучшения. Спасибо.


person CodingInCircles    schedule 24.03.2014    source источник
comment
что у тебя не так?   -  person Abhishek Nayak    schedule 25.03.2014
comment
Группировка во 2-м и 3-м столбцах и тот факт, что .0 добавляется к числу в 3-м столбце, нежелательны. Это происходит только в первом случае. При фильтрации он отображается правильно.   -  person CodingInCircles    schedule 25.03.2014