2015-03-19 3 views
1

У меня следующий код в моем JSP PAGE-проблема с форматом тега JSTL в JSP странице

<fmt:formatNumber value="${(r.p51_vmeset-row.p51_vmeset)}" maxFractionDigits="2" minIntegerDigits="2" var="mm" /> 
<td style="${mm eq 0 ? 'background-color: lime':'background-color: pink'}"> 
<c:out value="${mm}" ></c:out></td> 

С помощью этого кода я хочу показать, что независимо от результата вычитания, если дисплей дробная часть равна нулю в первом две цифры и нуль в целочисленной части, тогда результат должен быть сохранен в переменной мм, а цвет лайма должен отображаться как maxFractionDigits = "2" minIntegerDigits = "2" равен нулю вычитания.

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

Пример -

Пусть мой r.p51_vmeset значение -0,4000977 и значение row.p51_vmeset является -0,40009767 .Затем вычитание обоих значений даст -0.0000003, но я хочу, чтобы это быть обрезаны как 00.00, а цвет должен быть известь не розовый.

Я пытался печатать мой результат как-

<fmt:formatNumber value="${(r.p99_vmeset-row.p99_vmeset)}" maxFractionDigits="2" minIntegerDigits="2" var="mm" /> 
    **<c:out value="${mm}"></c:out>** 
    <td style="${mm eq 0 ? 'background-color: lime':'background-color: pink'}" > 
     <c:out value="${mm}" ></c:out></td> 

С: из шоу дорожит 00.00 Но когда я сравнить его в том, что если мм равна нуль цвета фона должна быть известь, но его показ розовым. Y ??

+0

GIve пример вашего номера, на который вы хотите цвет лайма –

+0

@BrijeshBhatt, я отредактировал мой вопрос. –

ответ

0

Вы можете использовать следующие форматировать числа к целому числу:

<fmt:formatNumber var="i" maxIntegerDigits="3" maxFractionDigits="0" 
        type="number" value="${mm}" /> 

, а затем сравнить здесь:.

<td style="${i eq 0 ? 'background-color: lime':'background-color: pink'}"> 
+0

Я не хочу, чтобы он преобразовывал его в Integer. Но хочет обрезать его в следующем формате ##. ##, и если этот формат имеет значение как 00.00, тогда должен быть цвет лайма. –

+0

Это означает, что если значение 00.05, цвет должен быть розовым ???? –

+0

yes.The цвет будет извести только тогда, когда после вычитания и обрезки значений до ###. ## результат будет 00.00 –

0

Если вы хотите иметь формат ## ## для любой величины вычитанием , попробуйте следующее:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 

//use pattern="00.00"(0 represents a digit), instead of max/min 
<fmt:formatNumber value="${(r.p51_vmeset-row.p51_vmeset)}" pattern="00.00" var="mm" /> 

//remove "-" in case it's negative value 
<c:set var="mm2" value="${fn:replace(mm, '-', '')}" /> 

//compare it with string '00.00', not number 
<td style="${(mm2 eq '00.00') ? 'background-color: lime':'background-color: pink'}"> 
<c:out value="${mm2}" ></c:out></td> 

Это должно работать, я только что протестировал. Прогони меня, если работает.

+0

Я хочу, чтобы мое целое число имело любое значение, но фракция должна быть только до двух цифр, то есть после вычитания значение может be ##. ## или ###. ## или ####. ##. Нет проблем с отрицательным знаком, это может произойти. Согласно моему требованию, я не могу сравнивать (mm2 eq '00 .00 '), так как это может быть 00.00 или 000.00. –

+0

Тогда зачем вы устанавливаете minIntegerDigits = "2"? Это вызывает проблему, когда вы сравниваете ее с 0, она будет рассматриваться как строка «00.xx», а не номер. Я думаю, что у вас может быть значение 132.22, 0.34, 0.00, можете ли вы объяснить, в каком случае вы хотите 00. ## или 000. ## или 00000. ##? Трудно понять. – XLi

+0

У меня есть значения формата 0.45 и 45.78 и 345.00 .Ok Я не буду устанавливать minIntegerDigits = "2". –

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