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" %> 
  • 相关阅读:
    Sphinx Search 学习 (一)
    求两个字符串最长子串的LCS算法 C语言实现(简短的实现函数)
    DPDK17.02入门手册
    DPDK2.1开发者手册4-7
    DPDK2.1开发者手册3-4
    DPDK2.1开发者手册1-2
    DPDK2.1 linux上开发入门手册
    深度优先搜索-linux上浅显易懂的例子
    多线程的电影
    数据对齐与代码优化笔记
  • 原文地址:https://www.cnblogs.com/zybcn/p/10766023.html
Copyright © 2011-2022 走看看