簡體   English   中英

JSP頁面中的JSTL格式標記的問題

[英]issue with format tag of JSTL in JSP Page

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

通過此代碼,我想顯示的是,如果小數部分的前兩位數字為零,整數部分為零,則無論減法結果如何,然后結果必須存儲在變量mm中,並且石灰顏色應顯示為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>

c:out顯示值為00.00,但是當我比較它時,如果mm等於零,則背景色應為石灰,但其顯示為粉紅色。

您可以使用以下命令將數字格式化為整數:

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

然后在這里比較:

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

如果您想將格式##。##表示為任何減值,請嘗試以下操作:

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

我剛剛測試過,這應該可以工作。 如果可行,請投票給我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM