JSP怎么把foreach循环改成for循环

谁学逆向工程 2016-12-13 10:52:18
内层循环有个 ${goodItem.marks} ,想在后面加个顿号,最后一次循环就不加顿号了,但是不知道循环次数。

			<c:forEach items="${page.result}" var="item" varStatus="status">
<tr>
<td>${status.index+1}</td>
<%-- <td><a href="javascript:void(0);" onclick="insureInfo('${item.transportnum}')">${item.transportnum}</a></td> --%>
<td>${item.transportnum}</td>
<td>${item.policyno}</td>
<td><fmt:formatNumber value="${item.amountcount }" pattern="${SL2_FORMAT }"/></td>
<td><fmt:formatNumber value="${item.premiumcount }" pattern="${SL2_FORMAT }"/></td>
<td>${item.insuredate}</td>
<td><fmt:formatDate value="${item.zftim }" pattern="${DATE_FORMAT4 }"/> </td>
<td>${item.appName}|${item.appTel}</td>
<td>${item.insrntName}|${item.insrntTel}</td>

<td>${item.cargosortStr} 箱号:
<c:forEach items="${item.goods}" var="goodItem" varStatus="status">
${goodItem.marks}
</c:forEach>
</td>

<td>${item.startsiteStr}</td>
<td>${item.endsiteStr}</td>
<td>${item.starttransportdate}</td>
<td>${item.statusStr}</td>
<td>${item.insureMsgQueue.errtimes}</td>
<td>${item.insureMsgQueue.remark}</td>
</tr>
</c:forEach>


贴点额外信息做参考

InsureGoods.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.golden.ex.yht.app.insure.model.Good" table="INSURE_GOOD">
<id name="goodid" type="java.lang.String">
<column name="GOODID" length="10" />
<generator class="sequence">
<param name="sequence">PK_INSURE_GOODID</param>
</generator>
</id>
<property name="transportnum" type="java.lang.String">
<column name="TRANSPORTNUM" length="32" not-null="true" />
</property>
<property name="detailname" type="java.lang.String">
<column name="DETAILNAME" length="80" not-null="true" />
</property>
<property name="amount" type="java.lang.Double">
<column name="AMOUNT" precision="20" not-null="true" />
</property>
<property name="premium" type="java.lang.Double">
<column name="PREMIUM" precision="20" />
</property>
<property name="marks" type="java.lang.String">
<column name="MARKS" length="200" />
</property>
<property name="sealno" type="java.lang.String">
<column name="SEALNO" length="40" />
</property>
<property name="quantity" type="java.lang.String">
<column name="QUANTITY" length="200" />
</property>
<property name="wrap" type="java.lang.String">
<column name="WRAP" length="100" />
</property>
</class>
</hibernate-mapping>



Good.java
package com.golden.ex.yht.app.insure.model;

import java.io.Serializable;

public class Good implements Serializable{

/**

* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)

*/
private static final long serialVersionUID = 2713665961370810013L;
private String goodid;
private String transportnum;
private String detailname;
private Double amount;
private Double premium;
private String marks;
private String sealno;
private String wrap;
private String quantity;

public Good(){

}

public Good(String transportnum, String detailname, String quantity,Double amount,
String marks,String sealno,String wrap) {
this.transportnum= transportnum;
this.detailname = detailname;
this.quantity=quantity;
this.amount = amount;
this.marks = marks;
this.sealno = sealno;
this.wrap=wrap;
}

//省略 get set 函数


Base.java
package com.golden.ex.yht.app.insure.model;

import java.util.Date;
import java.util.List;

import com.golden.ex.base.util.StringUtil;
import com.golden.ex.yht.app.insure.common.CheckerAnnotion;
import com.golden.ex.yht.app.insure.common.InsureConstants;
import com.golden.ex.yht.app.insure.common.StringAttrChecker;

public class Base implements java.io.Serializable {

/**
*
* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
*/
private static final long serialVersionUID = 9157544519347613057L;
private String transportnum;
private String protocolno;
private String insuredate;
private String startdate;
private String enddate;
private Double premiumcount;
private Double amountcount;
private String riskcode;
private String mainkindcode;
private String appName;
private String appType;
private String appIdType;
private String appId;
private String appAddr;
private String appPort;
private String appTel;
private String insrntName;
private String insrntType;
private String insrntIdType;
private String insrntId;
private String insrntAddr;
private String insrntPort;
private String insrntTel;
private String remark;
private String transrno;
private String serialnumber;
private String transrdate;
// @CheckerAnnotion(len = 32, type = CheckerAnnotion.TYPE_STR, required = true)
private String invoice;
private String startsite;
private String startsitedetail;
private String viasite;
private String viasitedetail;
private String endsite;
private String endsitedetail;
private String starttransportdate;
private String voyageno;
private String conveyance;
private String shipagecode;
private String cargosort;
private String status;
private String status1;
private Integer synstatus;// 保险报文同步状态
private Long logid;// 保险报文ID
private String policyno;// 中华保险返回的保单号
private String policyurl;// 保单下载地址
private String Extbillno;
private String hydm;
private String creater;
private Date createtim;
private Date zftim;
private String transShipFlag;

private String riskcodeStr;
private String mainkindcodeStr;
private String appIdTypeStr;
private String insrntIdTypeStr;
private String conveyanceStr;
private String startsiteStr;
private String viasiteStr;
private String endsiteStr;
private String shipagecodeStr;
private String cargosortStr;
private String statusStr;
private String status1Str;
private InsureMsgQueue insureMsgQueue;
private List<Good> goods;
private String startsiteProcince;
private String endsiteProvince;


//省略 get set 函数





public String toTransportXml() throws Exception {
StringAttrChecker.checkFields(this);
StringBuffer buff = new StringBuffer();
buff.append("<INVOICE>").append(this.getInvoice()).append("</INVOICE>").append("\n");
buff.append("<STARTSITE>").append(this.getStartsite()).append("</STARTSITE>").append("\n");
if(StringUtil.isNotNull(this.getStartsitedetail()))
buff.append("<STARTSITEDETAIL>").append(this.getStartsitedetail()).append("</STARTSITEDETAIL>").append("\n");
// buff.append("<VIASITE>").append(this.getViasite()).append("</VIASITE>").append("\n");
// buff.append("<VIASITEDETAIL>").append(this.getViasitedetail()).append("</VIASITEDETAIL>").append("\n");
buff.append("<ENDSITE>").append(this.getEndsite()).append("</ENDSITE>").append("\n");
if(StringUtil.isNotNull(this.getEndsitedetail()))
buff.append("<ENDSITEDETAIL>").append(this.getEndsitedetail()).append("</ENDSITEDETAIL>").append("\n");
buff.append("<STARTTRANSPORTDATE>").append(this.getStarttransportdate()).append("</STARTTRANSPORTDATE>")
.append("\n");
buff.append("<VOYAGENO>").append(this.getVoyageno()).append("</VOYAGENO>").append("\n");
buff.append("<CONVEYANCE>").append(this.getConveyance()).append("</CONVEYANCE>").append("\n");
// buff.append("<SHIPAGECODE>").append(this.getConveyance()).append("</SHIPAGECODE>").append("\n");
buff.append("<CARGOSORT>").append(this.getCargosort()).append("</CARGOSORT>").append("\n");
buff.append("<TRANSSHIPFLAG>").append(this.getTransShipFlag()).append("</TRANSSHIPFLAG>").append("\n");
return buff.toString();
}

//此处省略 get set 函数
}
...全文
429 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
roger-jie 2016-12-13
  • 打赏
  • 举报
回复
引用 6 楼 m2200 的回复:
<c:if test="${! status.last}">
			加顿号
		</c:if>
爱睡觉的阿狸 2016-12-13
  • 打赏
  • 举报
回复
<c:if test="${! status.last}">
			加顿号
		</c:if>
爱睡觉的阿狸 2016-12-13
  • 打赏
  • 举报
回复
不用这么麻烦forEach很强大的,varStatus有个last属性,为布尔值,为true的时候表示最后一次循环,后面你应该知道怎么做了吧。
醉花阴柳 2016-12-13
  • 打赏
  • 举报
回复
page.result是一个容器类吧,forEach的属性换成 begin 和 end, 调用容器类的方法遍历
roger-jie 2016-12-13
  • 打赏
  • 举报
回复
引用 2 楼 xiaoyuanyuan2009 的回复:
[quote=引用 1 楼 qq_28986643 的回复:] <% 在这个里面写%>
for循环第二个分号的循环次数怎么弄[/quote]定义一个i 循环就i++;判断集合的长度不就ok了
谁学逆向工程 2016-12-13
  • 打赏
  • 举报
回复
引用 1 楼 qq_28986643 的回复:
<% 在这个里面写%>
for循环第二个分号的循环次数怎么弄
roger-jie 2016-12-13
  • 打赏
  • 举报
回复
<% 在这个里面写%>
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于JSP+JavaBean+Servlet三层架构员工考勤管理系统源码+数据库+项目说明.zip # JavaWeb_Attendance 1. 软件开发流程(可说明软件的开发流程包括几个阶段,每个阶段做什么任务,出什么文档)z 1) 分析理解前端页面,将前端的html页面改成Jsp页面,JSP页面加入page标签 2) 将JSP页面中的静态数据 修改为从数据库查询到的动态数据,通过JSTL的ForEach进行循环遍历数据,并通过EL表达式取出数据。 3) 修改JSP代码中的分页查询部分代码, 并将(总记录条数,总页码数,每页要显示的数据List 当前页码,每页显示的记录条数(默认为5) 封装到PageBean类中) 4) 通过JSP中的标签的href属性 或 form的action属性 或 js代码的自定义提交方法进行跳转到Servlet层 5) Servlet层调用Dao层的操作数据库的方法,包括: 数据库的增删改查。添加、删除、查询、多表查询、模糊搜索。 6) 面向接口编程,先写dao接口 再写dao的实现类。 7) 操作完数据库,如果是查询数据 将结果集返回到servlet页面,通过setAttribute(key,value)将数据存入request作用域,跳转回JSP页面,再通过JSP页面的EL表达式获取存入的数据。 8) 如果是修改数据,修改完成后直接跳转页面就可 2. 项目整体功能概要(大体说明整个项目的功能) 所有功能全部实现 - 登录、注册(用户添加) - 登录后的首页,显示的是本地时间 - 用户管理 * 分页查询用户信息 * 修改用户用户信息(数据回显,修改) * 删除用户信息 * 添加用户信息 * 模糊搜索用户信息 * 批量删除用户信息 - 部门管理 * 分页查询部门信息 * 修改部门信息(数据回显,修改) * 删除部门信息(部门下人数为0才可删除,不为0就不能是删除) * 添加部门信息 * 模糊搜索部门信息 * 批量删除部门信息 - 日报管理 * 分页查询日报信息 * 修改日报信息(数据回显,修改) * 删除日报信息 * 添加日报信息 * 模糊搜索日报信息 * 批量删除日报信息 - 加班管理 * 加班申请分页查询 * 修改加班申请(数据回显,修改) * 删除加班申请 * 添加 * 模糊搜索 * 批量删除加班信息 - 休假管理 * 休假申请分页查询 * 修改休假申请(数据回显,修改) * 删除加休假申请 * 添加休假申请 * 模糊搜索休假信息 * 批量删除休假信息 - 审批管理(审批加班申请 和 审批休假申请) * 待处理的加班申请 的 分页查询 * 通过加班申请 * 驳回加班申请 * 待处理的休假申请 的 分页查询 * 通过休假申请 * 驳回休假申请 * 模糊搜索 待处理的 加班申请和休假申请 - 个人信息修改 * 根据登录的id查询数据库进行 数据的回显,保存后完成信息修改 - 我的桌面 * 当审批信息后,该页面就会显示通过还是驳回的信息及审批时间 4. 个人承担的开发任务说明(标明个人模块的完成情况,所开发的每个模块功能详细说明及界面) - 登录、注册(用户添加) 从输入框输入数据,在servlet层通过request.getParameter()获取form表单提交的参数,将获得的用户名、密码作为参数调用dao层的方法进行查询数据库,select * from t_user_info where username=? andpassword =? 如果数据库查询结果集不为空,则说明数据库中有该用户名和密码,可以登录成功。登录成功返回main.jsp页面,登录失败则提示账号或密码错误的信息。 public int searchId(Users u) { String sql = "select id from t_user_info where name = ? and password = ? "; conn = du.getConn(); ps = du.getPs(conn,sql); int myId = 0; try { ps.setString(1,u.getName());

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧