zoukankan      html  css  js  c++  java
  • 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" %> 
  • 相关阅读:
    剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
    剑指 Offer——3. 从尾到头打印链表
    剑指 Offer——2. 替换空格
    剑指 Offer——1. 二维数组中的查找
    LeetCode 905. Sort Array By Parity 按奇偶校验排列数组
    LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素
    SSH 代码笔记
    anaconda3安装caffe
    opencv多版本安装
    人脸文章与数据库
  • 原文地址:https://www.cnblogs.com/zybcn/p/10766023.html
Copyright © 2011-2022 走看看