2014-08-31 95 views
0

在JSP我有这个部分和正常工作访问JSTL变量计算的JSP在JSTL

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

这里infoList来自撑杆动作类,这是类的一个ArrayListInfo

public class Info{ 
private String key; 
private String total; 
private String delay 

} 

现在我需要添加另一个<td>,它将打印计算的百分比,例如$ {info.delay} * 100/$ {info.total},但会在小数点后打印两位数字。

我想这

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

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

NumberFormat formatter = new DecimalFormat("#0.00"); 

但我怎么能做到这一点我在这里,因为在我不能使用${}

我可以访问<% %>这些变量一些如何或者我可以在<c:>使用formatter .format()标签

回答

2

使用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 } " /> 
+0

更好。挑衅地配得上++。谢谢。 – Saif 2014-09-01 03:43:34

0

嗯,我想通了

在上面我这样做:

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

与我的TD我这样做:

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