在JSTL中计算的jsp中访问JSTL变量

时间:2014-08-31 10:44:44

标签: java jsp jstl el

在jsp中我有这个部分并且工作正常

<c:forEach var="info" items="${infoList}" >
<tr>
    <td>${info.key} </td>
    <td>${info.total}</td>
    <td>${info.delay}</td>
</tr>
</c:forEach>

此处infoList来自struts动作类,它是ArrayList的{​​{1}}

Info

现在我需要添加另一个public class Info{ private String key; private String total; private String delay } ,它会打印计算的百分比,如$ {info.delay} * 100 / $ {info.total},但会在十进制后打印两位数字。

我试过这个

<td>

打印百分比但不能限制为2位数。在java中我可以使用

${ info.totalDelay*100/info.totalShipment } 

但我将如何做到这一点,因为在NumberFormat formatter = new DecimalFormat("#0.00"); 我无法使用<% %> (jap tag)

我可以在${}中访问这些变量吗?或者我如何在<% %>代码中使用formatter .format()

2 个答案:

答案 0 :(得分:3)

使用JSTL Format Number

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatNumber type="number" minFractionDigits="2" maxFractionDigits="2" value="${ info.totalDelay*100/info.totalShipment } " />

答案 1 :(得分:0)

好吧我明白了

在顶部我这样做了:

<%
 NumberFormat numberFormat=new DecimalFormat("#.##");
%>

我是这样做的:

<td>
<c:set var="tl" value="${info.total}"></c:set>
<c:set var="dl" value="${info.delay}"></c:set>
<jsp:useBean id="tl" class="java.lang.String"/> 
<jsp:useBean id="dl" class="java.lang.String"/> 

<%
     out.println(numberFormat.format(Double.parseDouble(dl)*100/Integer.parseInt(tl)));
%>
</td>