jsp下读取c:forEach的循环次数,以及内部循环数据累加统计等

2023-11-18

前言

近日接触到一个比较旧的项目,框架使用的是Status2+Spring3,前端jsp大量内嵌了java代码,几乎未使用jstl和el表达式。
个人习惯原因,已经很不喜欢使用这种通过写java代码在jsp上做逻辑控制的方式,很不好让别人读代码。

表达式循环有几种方式,这里只说c:forEach。
在网上看了一下,没有自己需要的,自己写一个。
场景需求:
某用户登录后查看自己的购物车,及时显示其购物车内的商品种类和合计金额。

原理:

自己创建jstl变量,存储自己需要统计的内容放到循环体里执行即可。
定义2个变量,row_total统计金额,row_count统计数量

<c:set var="row_total" value="0"></c:set>
<c:set var="row_count" value="0"></c:set>

之后自己在循环体里进行运算,这个是自加1

<c:set var="row_count" value="${row_count+1}" />

这个是进行运算

<c:set var="row_total" value="${row_total +(productprice*rowData.productnum) }" />

之后在循环体外直接使用表达式,就是你需要的统计数据了

${row_total }   
${row_count }

然后备注一下,jsp页面头请引入jstl标签库

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

补充1

上面的例子上使用到了下面的标签,作用是格式化数字的

fmt:parseNumber

头部需引入

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

补充2

在c:foreach里同样也有统计字段,可以使用该字段进行统计,但只能在循环体内,完整用法如下,使用${status.count}可以获取循环次数,不过需要注意一下,它的计数是从1开始,而不是0

<c:forEach var=”data" items=”list" varStatus=”status”>
    <c:out value=”${status.current}”/> 当前对象
    <c:out value=”${status.index}”/> 此次迭代的索引
    <c:out value=”${status.count}”/> 已经迭代的数量
    <c:out value=”${status.first}”/> 是否是第一个迭代对象
    <c:out value=”${status.last}”/> 是否是最后一个迭代对象
</c:forEach>

下面是完整例子,用于实现购物车商品的展现与统计

<c:set var="row_total" value="0"></c:set>
<c:set var="row_count" value="0"></c:set>
<c:forEach var="rowData" items="${shopping_data}">
    <fmt:parseNumber var="productprice" value="${rowData.productprice}" type="number" />
    <c:set var="row_total" value="${row_total + (productprice*rowData.productnum) }" />
    <c:set var="row_count" value="${row_count+1}" />
<li>                
    <div class="p-img fl">
        <a href="${path }/productDetail?productId=${rowData.productid }">
        <img src="${path }${rowData.f_productimg}" width="50" height="50" alt=""></a>
    </div>                
    <div class="p-name fl">
        <span></span>
        <a href="${path }/productDetail?productId=${rowData.productid }" title="${rowData.productname}">
            ${rowData.productname}
        </a>
    </div> 
</li>
</c:forEach>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jsp下读取c:forEach的循环次数,以及内部循环数据累加统计等 的相关文章

  • 在java中切换imageIcon?

    我有很多在窗口中移动的平面 线程 我想根据平面的方向切换 ImageIcon 例如 如果飞机向右飞行 则飞机的 imageIcon 是向右的 然后飞机向左飞行 则将 imageIcon 交换为飞机向左 我怎样才能在方法paintCompon
  • 如何在 Spring 5 MVC 中将 FilePart 转换为 byte[]

    我有从网络表单接收和上传文件的控制器方法 如何从 FilePart 中提取字节数组并将其保存到数据库 我可以通过使用 FilePart transferTo 将 FilePart 保存到文件中来完成此操作 但这看起来又慢又难看 有更好的方法
  • 为什么这不会绘制图像?

    我想做的是 当我运行应用程序时 它会启动线程并且图像显示 3 秒 3000 毫秒 然后线程停止运行 图片路径正确 图片文件存在 线程本身运行 但是 图像似乎没有显示 可能出什么问题了 这是我的代码 package org main impo
  • 使用 Java 的 OpenId 提供者/服务器

    我正在尝试使用 OpenId 服务增强现有的 Java Web 应用程序 以便登录用户可以使用我的 Web 应用程序作为 OpenId 提供程序登录另一个启用 OpenId 的应用程序 My first attempt was to use
  • 如何在 Java 9 中使用新的 BeanInfo 注解

    JEP 256 BeanInfo 注释 http openjdk java net jeps 256为JavaBean http download java net java jdk9 docs api java beans JavaBea
  • javax.naming.NameNotFoundException

    我正在 JBoss 5 容器中运行 ejb 示例 我正在使用一个例子从这里开始 第一部分 http www roseindia net jboss jboss 3 2 shtml 在示例中 我在 JBoss 中部署了 bean 并在 Tom
  • 当目标是属性时,@Throws 不起作用

    在看的同时这个问题 https stackoverflow com q 47737288 7366707 我注意到申请 Throws to a get or setuse site 没有影响 此外 唯一有效的目标 for Throws ar
  • EDITLogBack Syslog 不工作 java

    我写了一个简单的项目来在 Ubuntu 中运行日志 方法如下example https examples javacodegeeks com enterprise java logback logback syslog example 应用
  • 如何查找给定字符串中仅出现一次的第一个字符[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 改造添加带有令牌和 ID 的标头

    我在获取经过身份验证的用户时遇到问题 在此之前我得到了令牌和用户 ID 现在我需要使用访问令牌和 ID 从服务器获取用户 我有标题格式 https i stack imgur com OQ87Y png 现在我尝试使用拦截器添加带有用户令牌
  • 在 JUnit 测试中读取资源文件

    我在单元测试中读取文本文件 并将一些输入文本文件放置在资源文件夹中 以下是目录结构 src gt com gt au gt myapp gt util gt MyFileReader 测试 gt com gt au gt myapp gt
  • 使用 https 的 Java Jersey RESTful Web 服务

    我是 Java EE 的新手 正在开发一个 RESTful API 其中每个 API 调用用户都会发送编码的凭据 我的问题是如何通过默认的 http 实现 https 协议并确保我的连接安全 我正在使用 Jersey Restful Web
  • 是否可以从 JBoss 容器中部署的所有 .war 文件中读取属性文件

    我已成功将 war 部署到 Jboss Web 容器 其中包含并读取位于 META INF groupid dir artifactid dir 下的 pom properties 为了访问该文件 我在同一 war 中的 JSP 中使用了以
  • 重构 google 的 NetworkBoundResource 类以使用 RxJava 而不是 LiveData

    谷歌的android架构组件教程here https developer android com topic libraries architecture guide html有一部分解释了如何抽象通过网络获取数据的逻辑 在其中 他们使用
  • 用于验证 InetSocketAddresses 的正则表达式(ipv4/v6 + 端口地址)

    我在寻找testedipv4 和 ipv6 的正则表达式InetSocket地址 http download oracle com javase 6 docs api java net InetSocketAddress html toSt
  • java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException

    我想将 apache cli 添加到我的应用程序中 但我有问题 当我尝试运行它时显示这些错误 Error A JNI error has occurred please check your installation and try aga
  • 如何将模型从 ML Pipeline 保存到 S3 或 HDFS?

    我正在尝试保存 ML Pipeline 生成的数千个模型 正如答案中所示here https stackoverflow com questions 32121046 run 3000 random forest models by gro
  • SWIG C 函数指针和 JAVA

    我有一些 C 代码 其中一个方法有一个函数指针作为参数 我正在尝试在我的 Android 应用程序中使用 C 代码 我决定使用 SWIG 来完成生成我需要的 java 文件的所有工作 一切都适用于常规函数 没有函数指针作为参数的函数 但我不
  • 注释处理工具<-检查有效注释

    I have ColumnMetadata index 1 ColumnMetadata index 2 ColumnMetadata index 3 我必须使用 APT 检查索引号是否唯一 我不知道该怎么做 我看不懂教程 一般我在网上找资
  • 使用基于Optional内容的流

    我从不受我控制的服务获取可能为空的地图 并且想要处理它 比方说 过滤 映射并减少到我需要的单个元素 问题 是否有从Optional到Stream的 链接 我尝试过 除其他外 return Optional ofNullable getMap

随机推荐

  • CNN可视化技术 -- CAM & Grad-CAM详解及pytorch简洁实现

    文章目录 前言 1 CAM Class Activation Map 2 Grad CAM 3 PyTorch中的hook机制 4 Grad CAM的PyTorch简洁实现 参考资料 前言 CNN中的特征可视化大体可分为两类 细节信息 ZF
  • Redis实战篇一 (短信登录)

    Redis企业实战 黑马点评 项目整体架构 项目部署 后端部署 前端部署 短信登陆 基于Session实现登录 集群的Session共享问题 基于Redis实现共享session登录 解决状态登录刷新的问题 登录拦截器的优化 本期学习路线
  • SVN导出版本增量包

    showlog 选择一个或者多个版本 右键 Compare with previous version 选择一个或者多个文件 右键 Expore selection to 最后导出的文件会有其相应的路径
  • 全志F1C200s芯片处理器参数介绍

    F1C200s是全志的一款高度集成 低功耗的移动应用处理器 可用于多种多媒体音视频设备中 全志F1C200s基于ARM 9架构 集成了DDR 它支持高清视频解码 包括H 264 H 263 MPEG 1 2 4等 它还集成了音频编解码器和I
  • cucumber测试_延长Cucumber测试生命周期

    cucumber测试 总览 本文涉及两件事 我如何使beforeAll和AfterAll生命周期事件在Cucumber中发生 在Cucumber测试运行之前 如何使用TestContainers设置被测系统 不 您正在尝试在博客上进行SEO
  • node.js升级报错digital envelope routines unsupporte最简单解决方案

    背景 本地将nodejs 16升级成nodejs18运行时报错digital envelope routines unsupported 报错 Error error 0308010C digital envelope routines u
  • cytoscape插件下载_cytoscape五步曲之三:安装各种插件

    软件安装我就不多说了 直接去官网下载即可 请务必下载3 x版本 我讲的是 最新版教程 本次讲解如何给cytoscape安装插件 cytoscape本身是一个平台 学者可以在上面开发各种各样功能的插件实现不同的分析需求 类似于R语言这个平台
  • mysql中varbinary什么意思_MySQL中的数据类型binary和varbinary详解

    前言 BINARY和VARBINARY与 CHAR和VARCHAR类型有点类似 不同的是BINARY和VARBINARY存储的是二进制的字符串 而非字符型字符串 也就是说 BINARY和VARBINARY没有字符集的概念 对其排序和比较都是
  • 当我被酱香拿铁刷屏后......

    这两天 朋友圈刮起了酱香风 跨界里的新宠儿酱香拿铁卖爆了 不得不说瑞幸是懂跨界的 短短一天时间 酱香拿铁已售出 542 万杯 销售额超一亿元 谁能想到年轻人的第一杯茅台竟然是瑞幸卖出去的 这可能也是星巴克最无语的一天吧 瑞幸的订单长到可以直
  • python多进程cpu的占用率很低_Python 中的进程池与多进程

    封面图片来源 沙沙野 内容概览 进程池 进程池和多进程的性能测试 进程池的其他机制 进程池的回调函数 进程池 如果有多少个任务 就开启多少个进程 实际上并不划算 由于计算机的 cpu 个数是非常有限的因此开启的进程数量完全和 cpu 个数成
  • LOAM算法详解

    激光SLAM 帧间匹配方法 Point to Plane ICP NDT Feature based Method 回环检测方法 Scan to Scan Scan to Map LOAM创新点 定位和建图的分离 里程计模块 高频低质量的帧
  • 在pycharm中更新pip失败

    尝试了网上的各种方法 各种翻车 删除虚拟环境中的这两个文件夹 包括pip 有只删除pip 21 1 2 dist info这个个文件夹然后重新安装pip之后在更新 我试了没有用 下载 get pip py 文件 转到 https boots
  • drive数据集_英伟达的最强人脸GAN开源了,它吃的高清数据集也开源了

    栗子 假装发自 凹非寺 量子位 出品 公众号 QbitAI 你大概还没忘记 英伟达去年年底推出的GAN 它合成的人脸甚至骗得过肉眼 如今 它终于有了自己的名字 叫StyleGAN 顾名思义 GAN的生成器 是借用风格迁移的思路重新发明的 能
  • Docker 入门笔记

    狂神说Java Docker最新超详细版教程通俗易懂 视频地址 https www bilibili com video BV1og4y1q7M4 share source copy web Docker安装 基本组成 说明 镜像 imag
  • 小米2020校招软件开发工程师笔试题二

    1 计算大于n n gt 1 的最小的斐波那契数 以下划线出应填入 B function f n int int a new int 2 a 0 a 1 1 int i 1 while true i i 1 2 a i If a i gt
  • C++标准库--正态分布类 std::normal_distribution

    参考链接 https en cppreference com w cpp numeric random normal distribution std normal distribution是C 11提供的一个正态分布函数模板类 头文件 i
  • 在matlab中使用遗传算法执行最优化

    遗传算法是一种通用的最优化方法 具体原理可以看 遗传算法详解与实验 下面记录在Matlab中如何使用遗传算法来做优化 用法 调用方式如下 1 x ga fun nvars 2 x ga fun nvars A b 3 x ga fun nv
  • webpack之sideEffects

    webpack之sideEffects 前言 一 sideEffects的使用 二 sideEffects注意事项 前言 webpack4新增了一个sideEffects新特性 它允许我们通过配置的方式 去标识我们的代码是否有副作用 从而为
  • 云计算的概念、原理和关键技术

    1 云计算的定义 NIST 美国国家标准及技术研究所 对云计算的定义 云计算是一种模型 实现无处不在的 方便 通过网络按需访问的可配置的共享计算资源池 例如 网络 服务器 存储 应用程序 服务 这些资源可以快速提供 通过最小化管理成本或与服
  • jsp下读取c:forEach的循环次数,以及内部循环数据累加统计等

    前言 近日接触到一个比较旧的项目 框架使用的是Status2 Spring3 前端jsp大量内嵌了java代码 几乎未使用jstl和el表达式 个人习惯原因 已经很不喜欢使用这种通过写java代码在jsp上做逻辑控制的方式 很不好让别人读代