JSTL: абсолютное значение BigDecimal (правильный путь ...) - PullRequest
1 голос
/ 16 декабря 2011

Прошу прощения за то, что сегодня вечером я пукнул, но по какой-то причине ... это лучшее решение, которое я могу найти прямо сейчас для получения ABS 1001 * с JSTL прямо сейчас ... Никаких математических трюков внеАБС тоже.Я должен поддерживать точность.

Я знаю, что есть лучший способ справиться с этим ... каково ваше предложение?Любой поиск в Google вызывает справку по formatNumber и обрабатывает валюты для дельта / негативов.

<c:forEach items="${arr}" var="cursor" varStatus="itemsRow">
  <c:choose>
    <c:when test="${cursor.value < 0}">
      <td width="75px" align="right">
        <fmt_rt:formatNumber pattern="#,###,###,###.##" value="${cursor.value * -1}" minFractionDigits="2"/></td>
    </c:when>
    <c:otherwise>
      <td width="75px" align="right">
        <fmt_rt:formatNumber pattern="#,###,###,###.##" value="${cursor.value}" minFractionDigits="2"/></td>
    </c:otherwise>
  </c:choose>
</c:forEach>

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

Используйте BigDecimal.abs () на стороне сервера; не выполняйте такую ​​работу в JSP.

Если вы должны , оберните его в пользовательский тег на основе JSP или создайте оболочку функции JSTL для обработки абс.

Кроме того, рефакторинг, похожий на этот (полностью непроверенный), если вы не можете выполнить работу в соответствующем месте:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${arr}" var="cursor" varStatus="itemsRow">
  <c:set name="val" value="${cursor.value < 0 ? cursor.value * -1 : cursor.value}"/>
  <td width="75px" align="right">
    <fmt_rt:formatNumber pattern="#,###,###,###.##" value="${val}" minFractionDigits="2"/>
  </td>
</c:forEach>
1 голос
/ 16 декабря 2011

Предполагая, что вы используете какой-то MVC-фреймворк или, по крайней мере, имеете сервлет, передающий данные в ваш JSP, я бы предложил построить ваш список BigDecimals в контроллере / сервлете как абсолютные значения - используйте BigDecimal.abs() - чтобы вам не приходилось портить JSP такими вещами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...