利用模板template动态渲染jsp页面
一、场景
在js中写html简直是噩梦,刚进新公司,在codereview的时候得知可以通过将html模板写在jsp页面,然后由js调取模板,利用replace()方法替换传值的方式避免在js中拼接html代码,尝试后,成功利用这种方式完成一个模块的增删查改。
二、具体方式
1. 在jsp页面编写模板,以花括号放置待替换的值
注意定义模板type="text/template"
<body>
<form id="MainDataBills" >
<input type="hidden" id="mainId" value="${ceMainDataBillsVO.id}" />
<!-- headLegend模板 -->
<script type="text/template" id="headTemplate">
<fieldset class="fieldset" id="headFieldset">
<legend id="mainLegend" class="mainLegend">数据单号:{databillsNo}</legend>
</script>
<script type="text/template" id="mainTemplate">
<div class="dlg-backbuttons" style="text-align: center">
<a class="easyui-linkbutton" id="submitButton" onclick="summitWholeDataBillsInCheck()"
data-options="iconCls:'icon-redo'">提交</a>
<a class="easyui-linkbutton" id="returnMainButton" onclick="rejectWholeDataBillsInCheck()"
data-options="iconCls:'icon-undo'">整体驳回</a>
</div>
<table class="fieldsetMainTable" id="mainDataBillsTable">
<tr>
<td class="fieldsetMainTableTd">:</td>
<td id="countTdId">{count}</td>
</tr>
<tr>
<td class="fieldsetMainTableTd">:</td>
<td id="ceCorrSumTdId">{ceCorrSum}</td>
</tr>
<tr>
<td class="fieldsetMainTableTd">:</td>
<td>{planeno}</td>
</tr>
<tr>
<td class="fieldsetMainTableTd">:</td>
<td>{rcLevel}</td>
</tr>
<tr style="display:none">
<td id="subCountTdId">{subCount}</td>
<td></td>
</tr>
</table>
</script>
2. 在js文件中根据id获取该模板,转换为html格式,用raplace替换需要动态显示的值
//获取head模板,作为headHtml
var headHtml = $("#headTemplate").html();
headHtml = headHtml.replace(/{databillsNo}/g,databillsNo); //获取main模板,作为mainHtml
var mainHtml = $("#mainTemplate").html();
mainHtml = mainHtml.replace(/{databillsNo}/g,databillsNo);
mainHtml = mainHtml.replace(/{count}/g,count);
mainHtml = mainHtml.replace(/{planeno}/g,planeno);
mainHtml = mainHtml.replace(/{rcLevel}/g,rcLevel);
mainHtml = mainHtml.replace(/{subCount}/g,subCount);
mainHtml = mainHtml.replace(/{ceCorrSum}/g,ceCorrSum);
3. 将替换后的html格式的数据append到jsp页面中,搞定
//全部模板相加
var sumHtml = headHtml + mainHtml + subHtmlSum + endHtml;
$('#MainDataBills').append(sumHtml);
三、注意问题
1. 所用前段框架为easyui, 在替换后的jsp中,需要重新渲染,进行相应组件的显示。
$.parser.parse($("#MainDataBills"));
四、存在不足
1. 该范例用了比较多获取父元素、兄弟元素、子元素的语句,后期修改页面结构容易造成错误。
var currentTab = parent.$("#tabs").tabs('getSelected'),
$(e).parent().parent().nextAll().hide();
var iNum = $(e).parent().find('input').eq(0).val();
利用模板template动态渲染jsp页面的更多相关文章
- 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器
置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本 ...
- 利用JSTL重写查询的jsp页面
利用JSTL重写Java Web MVC实例中的jsp页面 第一步:导入jstl.jar和standard.jar文件
- 基于JS正则实现模板数据动态渲染
最近业务上需要动态渲染模板数据: 一.业务需求: 1.前端后端定义好模板以及变量名,根据打印机类型转换成对应sdk需要的标签模板,保存数据库 2.订单数据是前端根据支付结果获取的,最终渲染完的数据模板 ...
- Java从服务器上获取时间,动态在jsp页面显示
Java获取服务器时间,动态显示到jsp页面,大家都是到Java只能获取一次,到页面的时间是静态的,不过通过js和Java的合作,巧妙地实现此功能 本人是给电视做系统,客户要求页面能显示时间,因为电视 ...
- 动态渲染页面爬取(Python 网络爬虫) ---Selenium的使用
Selenium 的使用 Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击.下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬.对于一些JavaS ...
- 动态渲染页面爬取-Selenium & Splash
模拟浏览器的动机 JS动态渲染的页面不止Ajax一种 很多网页的Ajax接口含有加密参数,分析其规律的成本过高 通过对浏览器运行方式的模拟,我们将做到:可见即可爬 Python中常用的模拟浏览器运行的 ...
- 微信小程序(五) 利用模板动态加载数据
利用模板动态加载数据,其实是对上一节静态数据替换成动态数据:
- Web项目中用模板Jsp页面引入所有静态样式脚本文件(js,css等)
这样的好处是不需要再每个页面中都添加太多的外链接(不会减少请求数量),但对开发会更快捷,如果更改这些文件的位置或名称,只需要更改模板文件,不需要一个一个页面复制粘贴:同时可以为不同jsp页面组创建不同 ...
- 爬虫动态渲染页面爬取之Splash的介绍和使用
Splash是一个JavaScript渲染服务,是一个带有HTTP API的轻量级浏览器,同时它对接了Python中的Twisted和QT库.利用它,我们同样可以实现动态渲染页面的抓取. 1. 功能介 ...
随机推荐
- 笔记-64位dump转32位dump
下图是从测试拷64位windbg抓的dump文件拖到32位windbg查看线程堆栈信息的效果. 那么我们加载一下wow64exts模块,因为需要这个模块帮助把64位的dump,转换成32位的dump. ...
- Increasing Speed Limits
Increasing Speed Limits Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- Android 开发笔记___SD卡基本操作
package com.example.alimjan.hello_world; /** * Created by alimjan on 7/5/2017. */ import android.ann ...
- Cache 和 Buffer 都是缓存,主要区别是什么?
存储器的高速缓冲存储器存储了频繁访问的RAM位置的内容及这些数据项的存储地址.当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址.如果存有该地址,则将数据返回处理器;如果没有保存该地址 ...
- c#简单实现二维数组和二维数组列表List<>的转置
刚看到网上一篇文章里用sql实现了行列转置.sql server 2005/2008只用一个pivot函数就可以实现sql server 2000很多行的复杂实现.提到转置,立刻想起还在求学阶段曾经做 ...
- Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址
我们在客户端设置邮箱或者使用 PHPMailer 发送邮件的时候,我们都会去查找这些邮箱的 IMAP/SMTP/POP3 地址,这里就列出 Gmail, QMail, 163邮箱这三个常用邮箱的这些地 ...
- [转载] 使用HTML5的十大原因
转载自http://www.williamlong.info/archives/3024.html 你难道还没有考虑使用HTML5? 当然我猜想你可能有自己的原因:它现在还没有被广泛的支持,在IE中不 ...
- 如何创建 Swarm 集群?- 每天5分钟玩转 Docker 容器技术(95)
本节我们将创建三节点的 swarm 集群. swarm-manager 是 manager node,swarm-worker1 和 swarm-worker2 是 worker node. 所有节点 ...
- 其他信息: ORA-01400: 无法将 NULL 插入
这个错误其实就是oracle数据库的某列约束为 not null,但在插入值的时候插入了控制,无论是null和"",它都识别为空 有两种方法: 1.修改数据库字段约束为允许为空 2 ...
- ionic开发遇到的坑及总结
前言 ionic是一个用来开发混合手机应用的,开源的,免费的代码库.可以优化html.css和js的性能,构建高效的应用程序,而且还可以用于构建Sass和AngularJS的优化.ionic会是一个可 ...