list<实体类>嵌套list<实体类>,必须保证嵌套的实体类里面有这个list对象,把这个list<实体类>当做一个对象
这是需要解析的数据,并把这些数据封装成list<实体类>对象,传给前台
<root>
<RETURN_CODE>0</RETURN_CODE>
<RETURN_DESC>成功!</RETURN_DESC>
<RETURN_INFO>
<order_info>
<so_nbr>7004519</so_nbr>
<cust_id>2028814</cust_id>
<appl_date>2019-03-21 15:27:56</appl_date>
<compl_date>null</compl_date>
<deal_staff_name>null</deal_staff_name>
<deal_staff_mobile>null</deal_staff_mobile>
<compl_phenom>无法打开互动电视页面</compl_phenom>
<fault_reason>null</fault_reason>
<book_date>2019-04-19 14:00:00</book_date>
<book_time>14:00--18:00</book_time>
<run_sts>待处理</run_sts>
<deal_log>
<deal_info>
<deal_time>2019-03-29 08:58:27</deal_time><deal_type>领单</deal_type><deal_name>王超群</deal_name><deal_mobile>null</deal_mobile>
</deal_info>
<deal_info>
<deal_time>2019-03-29 09:00:04</deal_time><deal_type>回单</deal_type><deal_name>王超群</deal_name><deal_mobile>null</deal_mobile>
</deal_info>
<deal_info>
<deal_time>2019-03-22 17:01:57</deal_time><deal_type>定单生成</deal_type><deal_name>系统</deal_name><deal_mobile>null</deal_mobile>
</deal_info>
</deal_log>
</order_info>
<order_info>
<so_nbr>7004505</so_nbr>
<cust_id>2028814</cust_id>
<appl_date>2019-04-19 08:48:50</appl_date>
<compl_date>null</compl_date>
<deal_staff_name>null</deal_staff_name>
<deal_staff_mobile>null</deal_staff_mobile>
<compl_phenom>整体网速慢</compl_phenom>
<fault_reason>null</fault_reason>
<book_date>2019-04-19 08:30:00</book_date>
<book_time>08:30--12:00</book_time>
<run_sts>待处理</run_sts>
<deal_log>
<deal_info>
<deal_time>2019-04-19 08:49:02</deal_time><deal_type>定单生成</deal_type><deal_name>系统</deal_name><deal_mobile>null</deal_mobile>
</deal_info>
</deal_log>
</order_info>
</RETURN_INFO>
</root>
下面是实体类,为了节省空间get、set方法没写;如果不写toString()方法,看不到数据
public class OrderInfo { /**
* 定单号
*/
private String soNbr; /**
* 客户证号
*/
private String custId; /**
* 受理时间
*/
private String applDate; /**
* 完成时间
*/
private String complDate;/**
* dealLogInfo
*/
private List<DealLogInfo> dealLogInfo; }
public class DealLogInfo { /**
* 操作时间 yyyy-mm-dd hh24:mi:ss
*/
private String dealTime; /**
* 操作类型
*/
private String dealType; /**
* 操作人
*/
private String dealName; /**
* 操作人联系方式
*/
private String dealMobile; }
逻辑代码,不全
List<OrderInfo> orderList = new ArrayList<OrderInfo>();
//存储到list实体类集合
OrderInfo or = new OrderInfo();
orderList.add(or);
or.setApplDate(appl_date);
or.setBookDate(book_date);
or.setBookTime(book_time); List<DealLogInfo> dealInfoList = new ArrayList<DealLogInfo>();
DealLogInfo deal = new DealLogInfo();
dealInfoList.add(deal);
for (Element element : dealList) {
deal.setDealTime(deal_time);
deal.setDealType(deal_type);
deal.setDealName(deal_name);
deal.setDealMobile(deal_mobile);
}
or.setDealLogInfo(dealInfoList);
request.setAttribute("orderList", orderList);
前台取值
遇到的错误:
el表达式获取list数据报错:java.lang.NumberFormatException:For input string: "xxx"
后来查询资料,是由于list会默认将后面的数据当做下标读取,会出现这个情况
错误代码:
<c:forEach items="${orderList}" var="orderList" >
<ul >
<li>
<div>客户证号:</div>
<div>${orderList.custId}</div>
</li>
<li>
<div>故障现象:</div>
<div>${orderList.complPhenom}</div>
</li>
</ul>
<ul>
<li class="title color-6">派单</li>
<li class="detail color-9">
<p>${orderList.dealLogInfo.dealTime}</p>
</li>
</ul>
</c:forEach>
正确代码
只要标明下标或者再次foreach遍历roles的list就可以了
<c:forEach items="${orderList}" var="orderList" >
<ul >
<li>
<div>客户证号:</div>
<div>${orderList.custId}</div>
</li>
<li>
<div>故障现象:</div>
<div>${orderList.complPhenom}</div>
</li>
</ul>
<c:forEach items="${orderList.dealLogInfo}" var="dealLogInfo">
<ul>
<li class="title color-6">派单</li>
<li class="detail color-9">
<p>${dealLogInfo.dealTime}</p>
</li>
</ul>
</c:forEach>
</c:forEach>
页面需要引入c标签代码,否则也会爆这个错误
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!doctype html>
<html lang="en">
<%
String openId = request.getAttribute("openId") == null ? "" : request.getAttribute("openId").toString();
String area_id = request.getAttribute("area_id") == null ? "" : request.getAttribute("area_id").toString();
String customercode = request.getAttribute("cust_id") == null ? "" : request.getAttribute("cust_id").toString(); %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
list<实体类>互相嵌套和前台取值问题的更多相关文章
-
ZT: C#不建类直接Json解析与取值
C#不建类直接Json解析与取值 2017年10月19日 15:58:22 圆圆娃哈哈 阅读数:701 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn. ...
-
c#利用反射实现对类中的常量进行取值和对应常量的注释
C#利用反射实现对类中的常量进行取值和对应常量的注释 项目示例:https://gitee.com/dhclly/IceDog.GenerateErrorCode 因为业务需要,项目中有大量的错误码, ...
-
mybatis 一对一 映射实体类、嵌套查询
一对一 在SysUser 类中增加SysRole字段.1.sql语句将role.role_name映射到role.roleName上. 2.还可以在XML 映射文件中配置结果映射.<result ...
-
java中遍历实体类属性和类型,属性值
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...
-
Springboot在包含有参构造方法的类中使用@Value注解取值
我们在Springboot中经常使用@Value注解来获取配置文件中的值,像下面这样 @Component class A { @Value("${user.value}") pr ...
-
springmvc的ModelMap,前台取值
利用 ${user.id}或者‘${user.id}’都是可以直接获取到的,不过前提是在jsp页面的script脚本中,而在引用的js文件中是不可以使用的,因为${}是jsp的el标签. 利用 ${u ...
-
对深层嵌套对象进行取值&;赋值
需求如下: let obj = { foo: { bar: { name: 'biz' } } }; // 输出 'biz' this.getObj(obj, 'foo.bar.name'); obj ...
-
0005SpringBoot中用Junit测试实体类中绑定yml中的值
1.编写SpringBoot的引导类 package springboot_test.springboot_test; import org.springframework.boot.SpringAp ...
-
C#获取一个实体类的属性名称、属性值
using System.Reflection; Type t = obj.GetType();//获得该类的Type foreach (PropertyInfo pi in t.GetPropert ...
随机推荐
-
Cheatsheet: 2016 09.01 ~ 09.30
Web Is JavaScript Single-Threaded? Quill 1.0 – Better Rich Text Editor for Web Apps Next Generation ...
-
hdu - 2102 A计划 (简单bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...
-
DailyWallpaper v1.02 released
上次忘了写软件说明,先补上一个. 软件说明: 每天定时(暂定上午11点)下载美国国家地理网站的photo of the day图片作为桌面壁纸.下载图片会以日期为名称保存在C:\DailyWallpa ...
-
The 6th Zhejiang Provincial Collegiate Programming Contest->;ProblemA:Second-price Auction
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3202 题意:拍卖东西,以第二高价的价格卖给出第一高价的人.输出最后获得东西 ...
-
K:java中properties文件的读写
Properties类与.properties文件: Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集的类,不过Properties有特殊 ...
-
windows下程序启动检查,只启动一个实例
问题来源:http://bbs.csdn.net/topics/390998279?page=1#post-398983061 // Only_once.cpp : 定义控制台应用程序的入口点. // ...
-
【前端性能】Web 动画帧率(FPS)计算
我们知道,动画其实是由一帧一帧的图像构成的.有 Web 动画那么就会存在该动画在播放运行时的帧率.而帧率在不同设备不同情况下又是不一样的. 有的时候,一些复杂或者重要动画,我们需要实时监控它们的帧率, ...
-
(摘)sql-索引的作用(超详细)
(一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonc ...
-
随便说说sequelize的问题
最近在做的项目频繁的修改数据库让人感觉很烦躁,sequelize在执行sync的时候只会重新创建表,如果原先有数据只能直接删除,但是这样显然是不行的,因为数据不能就这么消失了吧. 所以必须要migra ...
-
Django的请求生命周期
Django的请求生命周期 请求生命周期 请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情. 1.客户端发送Http请求 2 .服务器接收,根据请求 ...