SpringMVC 多层嵌套的数据接收与展现

2024-05-03 06:38

本文主要是介绍SpringMVC 多层嵌套的数据接收与展现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


业务需求与设计


一个媒体可以创建多条返点规则

返点规则 分为 阶梯返点 / 固定返点

阶梯返点 分为 返点下限 与 返点上限 以及 返点率

固定返点 分为 返点率



设计 


返点规则 - 》 返点规则 JavaBean

返点明细 -》  返点明细 JavaBean

返点规则 下面有 返点明细(固定/阶梯)。



返点明细 

package com.ybl.test.threetiercurd.bean;/*** Created by szh on 2017/11/28.*/
public class RebateTest {private String rebateFloor;private String rebateUpper;private String fixedUpper;public String getRebateFloor() {return rebateFloor;}public void setRebateFloor(String rebateFloor) {this.rebateFloor = rebateFloor;}public String getRebateUpper() {return rebateUpper;}public void setRebateUpper(String rebateUpper) {this.rebateUpper = rebateUpper;}public String getFixedUpper() {return fixedUpper;}public void setFixedUpper(String fixedUpper) {this.fixedUpper = fixedUpper;}
}


返点规则

package com.ybl.test.threetiercurd.bean;import java.util.List;/*** Created by szh on 2017/11/28.*/
public class RebateRuleTest {private String rebateRuleName;private Integer rebateRuleType;private List<RebateTest> rebateTestList;public Integer getRebateRuleType() {return rebateRuleType;}public void setRebateRuleType(Integer rebateRuleType) {this.rebateRuleType = rebateRuleType;}public String getRebateRuleName() {return rebateRuleName;}public void setRebateRuleName(String rebateRuleName) {this.rebateRuleName = rebateRuleName;}public List<RebateTest> getRebateTestList() {return rebateTestList;}public void setRebateTestList(List<RebateTest> rebateTestList) {this.rebateTestList = rebateTestList;}
}




媒体下的返点规则列表

package com.ybl.test.threetiercurd.bean;import java.util.List;/*** Created by szh on 2017/11/28.*/
public class ThreeTierVO {public String mediaName;List<RebateRuleTest> rebateRuleTestList;public String getMediaName() {return mediaName;}public void setMediaName(String mediaName) {this.mediaName = mediaName;}public List<RebateRuleTest> getRebateRuleTestList() {return rebateRuleTestList;}public void setRebateRuleTestList(List<RebateRuleTest> rebateRuleTestList) {this.rebateRuleTestList = rebateRuleTestList;}
}



前端Controller

package com.ybl.test.threetiercurd.controller;import com.ybl.test.threetiercurd.bean.RebateRuleTest;
import com.ybl.test.threetiercurd.bean.RebateTest;
import com.ybl.test.threetiercurd.bean.ThreeTierVO;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import java.util.ArrayList;
import java.util.List;/*** Created by szh on 2017/11/28.*/
@RequestMapping("/threeTierContoller/*")
@Controller
public class ThreeTierContoller {@RequestMapping("show")public String showThreeTier(Model model){RebateTest rebateTest1 = new RebateTest();rebateTest1.setRebateFloor("下限 : 0");rebateTest1.setRebateUpper("上限 : 10");RebateTest rebateTest2 = new RebateTest();rebateTest2.setRebateFloor("下限 : 10");rebateTest2.setRebateUpper("上限 : 20");RebateTest rebateTest3 = new RebateTest();rebateTest3.setRebateFloor("下限 : 20");rebateTest3.setRebateUpper("上限 : 40");List<RebateTest> rebateTestList1 = new ArrayList<>();rebateTestList1.add(rebateTest1);rebateTestList1.add(rebateTest2);rebateTestList1.add(rebateTest3);RebateRuleTest rebateRuleTest1 = new RebateRuleTest();rebateRuleTest1.setRebateRuleName("测试返点规则1");rebateRuleTest1.setRebateRuleType(1);rebateRuleTest1.setRebateTestList(rebateTestList1);//------------------------------------------RebateTest rebateTest4 = new RebateTest();rebateTest4.setFixedUpper("固定阶梯 : 50");List<RebateTest> rebateTestList2 = new ArrayList<>();rebateTestList2.add(rebateTest4);RebateRuleTest rebateRuleTest2 = new RebateRuleTest();rebateRuleTest2.setRebateRuleName("测试返点规则2");rebateRuleTest2.setRebateRuleType(0);rebateRuleTest2.setRebateTestList(rebateTestList2);ThreeTierVO threeTierVO = new ThreeTierVO();threeTierVO.setMediaName("三层关系测试");List<RebateRuleTest> rebateRuleTestList = new ArrayList<>();rebateRuleTestList.add(rebateRuleTest1);rebateRuleTestList.add(rebateRuleTest2);threeTierVO.setRebateRuleTestList(rebateRuleTestList);model.addAttribute("threeTierVO",threeTierVO);return "jsp/test/threetiercurd/testThreeTier.jsp";}@RequestMapping("modify")public String modifyThreeTier(Model model, ThreeTierVO threeTierVO){model.addAttribute("threeTierVO",threeTierVO);for(int i=0; i<threeTierVO.getRebateRuleTestList().size(); i++){System.out.println("返点规则名字 : " + threeTierVO.getRebateRuleTestList().get(i).getRebateRuleName());System.out.println("返点条目数量 : " + threeTierVO.getRebateRuleTestList().get(i).getRebateTestList().size());}return "jsp/test/threetiercurd/testThreeTier.jsp";}
}


页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head><title>3层嵌套的增删查改例子</title><link rel="shortcut icon" href="${baseResourcePath}/images/favicon.ico"><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><meta http-equiv="Cache-Control" content="no-store"/><meta http-equiv="Pragma" content="no-cache"/><meta http-equiv="Expires" content="0"/><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name="viewport" content="initial-scale=1,maximum-scale=1"/><jsp:include page="/resource/jsp/common/resourceFile.jsp"/>
</head><body><form action="/threeTierContoller/modify" method="post"><label>媒体名称</label><input type="text" name="mediaName" value="${threeTierVO.mediaName}"/><br/><br/><br/><c:forEach items="${threeTierVO.rebateRuleTestList}" var="rebateRuleTest" varStatus="rebateRulestatus"><label>返点规则名称</label><input type="text" name="rebateRuleTestList[${rebateRulestatus.index}].rebateRuleName" value="${rebateRuleTest.rebateRuleName}"/><br/><!-- 固定返点 --><c:if test="${rebateRuleTest.rebateRuleType == 0 }"><label>固定返点表单</label><br/><input type="hidden" name="rebateRuleTestList[${rebateRulestatus.index}].rebateRuleType" value="0"/><c:forEach items="${rebateRuleTest.rebateTestList}" var="rebateTest2" varStatus="fixedRebateStatus"><label>固定返点</label><input type="text" name="rebateRuleTestList[${rebateRulestatus.index}].rebateTestList[${fixedRebateStatus.index}].fixedUpper" value="${rebateTest2.fixedUpper}" /></c:forEach><br/><br/><br/><br/><br/><br/></c:if><!-- 阶梯返点 --><c:if test="${rebateRuleTest.rebateRuleType == 1 }"><label>阶梯返点表单</label><br/><input type="hidden" name="rebateRuleTestList[${rebateRulestatus.index}].rebateRuleType" value="1"/><c:forEach items="${rebateRuleTest.rebateTestList}" var="rebateTest3" varStatus="stageRebateStatus"><label>阶梯返点<c:out value="${stageRebateStatus.index}"/></label><br/><label>阶梯下限</label><input type="text" name="rebateRuleTestList[${rebateRulestatus.index}].rebateTestList[${stageRebateStatus.index}].rebateFloor" value="${rebateTest3.rebateFloor}" /><label>阶梯上限</label><input type="text" name="rebateRuleTestList[${rebateRulestatus.index}].rebateTestList[${stageRebateStatus.index}].rebateUpper" value="${rebateTest3.rebateUpper}" /><br/></c:forEach><br/><br/><br/><br/><br/><br/></c:if></c:forEach><input type="submit" value="提交"></form>
</body>
</html>


效果:



这篇关于SpringMVC 多层嵌套的数据接收与展现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/956065

相关文章

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

Spring Bean初始化及@PostConstruc执行顺序示例详解

《SpringBean初始化及@PostConstruc执行顺序示例详解》本文给大家介绍SpringBean初始化及@PostConstruc执行顺序,本文通过实例代码给大家介绍的非常详细,对大家的... 目录1. Bean初始化执行顺序2. 成员变量初始化顺序2.1 普通Java类(非Spring环境)(

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束