2011-12-16 2 views
1

Простите меня за мозговой пердит сегодня, но по какой-то причине ... это лучшее решение, которое я могу придумать прямо сейчас, когда вы получите АБС BigDecimal с JSTL прямо сейчас ... Никаких математических трюков вне АБС тоже. Я должен поддерживать точность.JSTL: Абсолютная ценность BigDecimal (Правильный путь ...)

Я знаю, что есть лучший способ справиться с этим ... каково ваше предложение? Любой поиск в 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> 
+0

ваш образец выглядит как HTML с некоторыми PHP разобранного в – Jon

+2

@ Джон Which. часть выглядит как PHP? Похож на JSP для меня. –

ответ

2

Использование 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> 
+0

Проблема в том, что эти объекты генерируются, поэтому я не должен касаться каких-либо методов инкапсуляции на стороне сервера. Это большое предложение, хотя, с некоторыми изменениями форматирования отображения, которые мне нужно будет сделать. Возможно, было бы проще продолжить и определить некоторые из моих собственных тегов. – Vehemon

+0

Предлагаемый тройной набор идеально подходит. Я был немного бредил прошлой ночью. Спасибо за помощь! – Vehemon

+0

@Vehemon Какие объекты сгенерированы? Между объектом объекта и JSP нет ничего? –

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^