list<实体类>互相嵌套和前台取值问题

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

原文地址:https://www.cnblogs.com/zybcn/p/10766023.html

时间: 2024-10-16 04:05:38

list<实体类>互相嵌套和前台取值问题的相关文章

Hibernate实体类与数据表字段默认值之间的优先关系

在日常的应用开发过程中,我们一般都会使用对象关系映射来通过面向对象的编程模型来解决数据库的操作,我们生产过程当中使用较多的当属Hibernate框架了,他非常灵活,为我们提供了多种方式来实现数据层的操作与管理.通过实体类与数据表的映射,实体类对应表,属性对应字段就可以将我们想要生产的对象赋值到数据库,但是我们有时也需要查询对象,但是无论什么操作,都必须通过实体类来传递数据. 有时我们数据库有一些字段是数据库自动赋值,禁止用户通过程序修改的,如记录生成时间,那么如果你实体类按照正常情况下,你为了查

WebForm 获取实体类的数据,填充页面(用session传值)

<1> 首先创建一个实体类 User using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace 实体类 { public class User { public int Id { get; set; } public string UserName { get; set; } public int Age { get; set; } public int Gend

实体类的状态与Hibernate缓存

一.Hibernate中实体类的三种状态 1.瞬时态 该状态下实体类对象的id属性没有值,该对象和session也没有关系. 实例: UserEntity user = new UserEntity(); user.setName("jack"); user.setPwd("123"); user.setScore(98.5f); 2.持久态 该状态下,实体类的对象的id属性有值,该对象和session也有关系. 实例: UserEntity userEntity

DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架

引言:DDD的困惑 最近,我看到园子里面有位朋友的一篇博客 <领域驱动设计系列(一):为何要领域驱动设计? >文章中有下面一段话,对DDD使用产生的疑问: •没有正确的使用ORM, 导致数据加载过多,导致系统性能很差. •为了解决性能问题,就不加载一些导航属性,但是却把DB Entity返回上层,这样对象的一些属性为空,上层使用这个数据时根本不知道什么时间这个属性是有值的,这个是很丑陋的是不是? 博主说的第一个问题,是因为使用ORM的人把实体类的全部属性的数据查询出来了,相当于执行了 sele

嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray

在复杂的JSON数据的格式中,往往会对JSON数据进行嵌套,这样取值会比之前的取值稍微复杂一点,但是只要思路清晰,其实取法还是一样的.就跟if else语句一样,如果if中套if,if中再套if,写的规范了还行,要是代码格式不规范,那我们肯定也看着麻烦.所以啊,对于json嵌套,只要记住符号“:”前是键,符号后是值,大括号成对找,一层层剥开,就清楚了. 举个例子说明,如下: { "resultcode":"200", "reason":"

spring+hibernate实体类注解详解(非原创) + cascade属性取值

@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(name="INFOM_TESTRESULT") public class TestResult extends IdEntity{} 1 @Entity(name="EntityName") 必须 name为可选,对应数据库中一的个表 2 @Table(name="

springmvc关于前台日期作为实体类对象参数类型转换错误

页面报错: 后台错误: Field error in object 'user' on field 'birthday': rejected value [2013-06-24]; codes [typeMismatch.user.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessag

java实体类的属性名首字母不能大写,不然el表达式无法取值

摘要:Java命名规范中,实体类属性名以小写字母开头,但并没有说不能以大写字母开头,然而事实告诉我,大写真不行 https://www.cnblogs.com/jnhs/p/10025757.html 原文地址:https://www.cnblogs.com/jnhs/p/10025769.html

java反射对实体类取值和赋值

项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T> void modelTrim(T model){ Class<T> clazz = (Class<T>) model.getClass(); //获取所有的bean中所有的成员变量 Field[] fields = clazz.getDeclaredFields(); for(