gpt4 book ai didi

java - JSTL fmt :formatNumber

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:26 26 4
gpt4 key购买 nike

如何使用 格式化变量?我正在学习 JSTL 并从旧的 Struts 标签进行转换。这是行不通的。它无法读取距离变量!

    <%double distance=geo.getDistance(geo.getLatitude(), geo.getLongitude(), lat, lng);%>
<c:set var="distanceEL" value="${distance}"/>
${distance},
<fmt:formatNumber pattern="0.0" value="${distance}"/>,
<fmt:formatNumber pattern="0.0" value="${distanceEL}"/>,
<fmt:formatNumber pattern="0.0" value="1234.567"/>,
<%= new java.text.DecimalFormat("0.0").format(distance) %>

显示为

, , , 1234.6, 19.3

我正在使用 JSTL 1.2。到目前为止,我没有留下深刻印象。

最佳答案

你在混老派 scriptletsEL并期望它们共享相同的变量范围。这不是真的。 EL(那些${}的东西)分别在page中搜索, request , sessionapplication第一个非 null 的范围匹配给定名称的属性并返回它。它不会以任何方式访问 scriptlet 本地范围。

基本上,制作

<%double distance=geo.getDistance(geo.getLatitude(), geo.getLongitude(), lat, lng);%>

可用 ${distance} ,您需要在任何所需的 EL 范围内设置它,例如请求范围

<%
double distance=geo.getDistance(geo.getLatitude(), geo.getLongitude(), lat, lng);
request.setAttribute("distance", distance);
%>

完成后,您就可以使用

<fmt:formatNumber pattern="0.0" value="${distance}"/>

无需按摩<c:set> , 顺便说一下。

请注意,如前所述,将 scriptlet 与 EL 混合并不是常规做法。你使用一个或另一个。在这种特殊情况下,Java 代码属于预处理 servlet class .

另请注意,您的具体问题与 JSTL 没有特别相关.您只是将它指向一个不存在的变量。

关于java - JSTL fmt :formatNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14273795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com