通过ApplicationContext.getBean(beanName)动态加载数据。
一,前台数据
$.ajax({
url: '/intra/coe/order/ploadTable.htm',
type: 'POST',
dataType: 'json',
data: {keyId:$("#key_keyId").val(),beanName:'cpAssetsModify',},
关键注意这个url
二,到后台的代码
(会默认的找到这个index方法,配置文件设置的)
@SuppressWarnings("unchecked")
public void index(HttpServletRequest request, HttpServletResponse response) {
String keyId = request.getParameter("keyId");
String beanName = request.getParameter("beanName");
String tableHead = request.getParameter("tableHead");
String tableName = request.getParameter("tableName");
LoadTableService loadTableService = ApplicationContext.getBean(beanName);
List<Map<String, Object>> headLst = getTableHead(tableHead);
if(headLst==null||headLst.size()==0){
headLst = loadTableService.getHeadList(keyId);
}
Map<String, Object> tableInfo = new HashMap<String, Object>();
tableInfo.put("tableName", tableName);
List<Map<String, Object>> bodyLst = (List<Map<String, Object>>) loadTableService.getBodyList(keyId,tableInfo);
上面的
ApplicationContext.getBean(beanName);
会把前台获取的这个bean去配置文件找,注意这个是application容器,所以就会去所有的已经加载的xml文件里面去找,包括jar包里面的xml文件
会找到下面的配置文件
<bean id="cpAssetsModify"
class=" com.bill99.seashell.boss.appcontroller.intra.product.AssetsCPModifyControler">
<property name="methodNameResolver">
<ref bean="paramResolver" />
</property>
<property name="merchantAccountService" ref="merchantAccountService"/>
<property name="merchantInfoService" ref="merchantInfoService"/>
<property name="workorderDetailService" ref="workorderDetailService"/>
<property name="dynamicBuildProductClient" ref="dynamicBuildProductClient"/>
</bean>
这个时候返会的就是
AssetsCPModifyControler这个类的一个代理对象,注意上面的index方法是公共的,但是这个时候假如把beanname为cpAssetsModify传过来找到对应的类AssetsCPModifyControler
loadTableService.getBodyList(keyId,tableInfo);实质上就是
AssetsCPModifyControler.getBodyList(keyId,tableInfo)了。
三,接口及实现类
public List<Map<String, Object>> getBodyList(String keyId,Map<String, Object> tableInfo);
上面的就是接口了。
public class AssetsCPModifyControler extends IntraProductBaseControler implements LoadTableService{
@Override
public List<Map<String, Object>> getBodyList(String keyId,Map<String, Object> tableInfo) {
List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
WorkorderDetail wd = workorderDetailService.findWorkorderDetailById(keyId);
String jsonStr = wd.getProductParam();
if(!StringUtil.isEmpty(jsonStr)){
try
{
Map<String, Object> productMap = JsonUtils.json2Map(jsonStr);
if(productMap.get("productList") != null){
List<Map<String,Object>> productList = (List)productMap.get("productList");
//获得cp下面的终端
getAddTerminals(resultList,productList);
//获得变更的终端 和 资产下面的终端
getUpdateTerminals(resultList, productList);
int terminalNo=1;
for (Map<String, Object> terminalMap : resultList) {
terminalMap.put("terminalNo", terminalNo);
terminalNo++;
}
}
} catch (Exception e) {
logger.error("json2Map异常", e);
}
}
return resultList;
}
这个是实现类,在这就可以操作了。
以上就是通过
ApplicationContext.getBean(beanName)
动态的加载的一种方式。
通过ApplicationContext.getBean(beanName)动态加载数据。的更多相关文章
- AppCan学习笔记----关闭页面listview动态加载数据
AppCan页面关闭 AppCan 的页面是由两个HTML组成,如果要完全关闭的话需要在主HTML eg.index.html中关闭,关闭方法:appcan.window.close(-1); 管道 ...
- [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件
页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空 ...
- 微信小程序(五) 利用模板动态加载数据
利用模板动态加载数据,其实是对上一节静态数据替换成动态数据:
- mui 动态加载数据出现的问题处理 (silder轮播组件 indexedList索引列表 下拉刷新不能继续加载数据)
mui-slider 问题:动态给mui的图片轮播添加图片,轮播不滚动. 解决:最后把滚动轮播图片的mui(".mui-slider").slider({interval: 300 ...
- ASP.NET MVC动态加载数据
ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分: Source Code 上图中,有一行代码: <tbody ...
- js实现滚动条来动态加载数据
主要angular2+es6 data:Array<any> //展示的数据 allData:Array<any> //全部的数据 size:number = 10 //每次动 ...
- js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样 ...
- js动态加载数据并合并单元格
js动态加载数据合并单元格, 代码如下所示,可复制直接运行: <!DOCTYPE HTML> <html lang="en-US"> <head> ...
- 爬虫--selenuim和phantonJs处理网页动态加载数据的爬取
1.谷歌浏览器的使用 下载谷歌浏览器 安装谷歌访问助手 终于用上谷歌浏览器了.....激动 问题:处理页面动态加载数据的爬取 -1.selenium -2.phantomJs 1.selenium 二 ...
随机推荐
- 二分图匹配 洛谷 [P3386]
最为经典的匈牙利算法 匈牙利算法应用了增广路的性质,实际上就是通过搜索可行的增广路,每搜到一条,匹配数++ 还可以应用配对的方法去理解,此算法的时间复杂度 (V*E),比较慢,但是实现较为简单. df ...
- 51NOD 1220 约数之和 [杜教筛]
1220 约数之和 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_1(ij)\) \[ \sigma_0(ij) = \sum_{x\mid i}\sum_{y\mi ...
- POJ 2007 Scrambled Polygon [凸包 极角排序]
Scrambled Polygon Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8636 Accepted: 4105 ...
- 七、Selenium与phantomJS----------动态页面模拟点击、网站模拟登录
每天一个小实例1(动态页面模拟点击,并爬取你想搜索的职位信息) from selenium import webdriver from bs4 import BeautifulSoup # 调用环境变 ...
- php 生成缩略图
$src = '4.jpg'; list($width,$height) = getimagesize($src); $im = imagecreatefromjpeg($src); $panl = ...
- LVS的NAT模式测试
dir 分别配置ip eth0 :10.222.138.200 eth0:1 10.222.21.190 rs1 eth0 :10.222.138.201 rs2 eth0: 10.222.1 ...
- [翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 平均值 vs 百分比
<<返回目录 平均值 vs 百分比 在考虑要性能测试的目标值时,我们需要考虑用什么统计口径.大多数人都会首选平均值,但在大多数情况下,这个正确的,但你也应该适当的考虑百分数.但你有可用性的 ...
- 使用maven搭建hibernate的pom文件配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- CompletableFuture CompletableFuture.supplyAsync 异常处理
CompletableFuture 异常处理completeExceptionally可以把异常抛到主线程 /** * User: laizhenwei * Date: 2018-01-30 Time ...
- 【视频编解码·学习笔记】8. 熵编码算法:基本算法列举 & 指数哥伦布编码
一.H.264中的熵编码基本方法: 熵编码具有消除数据之间统计冗余的功能,在编码端作为最后一道工序,将语法元素写入输出码流 熵解码作为解码过程的第一步,将码流解析出语法元素供后续步骤重建图像使用 在H ...