long型长整数字在前端页面显示异常及其解决方法
文章目录
1.引子
在做项目中,发现了一个诡异的事情,后台的long型数字不能正确地在前端页面显示。经过我的反复排查问题,总算是找到了问题原因所在,希望能帮助到大家,让大家少走弯路。
2.解决问题
(1)初试EL表达式取long型数值
后台java代码设置属性
BlogDetail currentBlog = pageModel.getDataArray().get(0);
//request中设置属性,以供前端页面获取
request.setAttribute("curBlog", currentBlog);
int categoryId = currentBlog.getCategoryId();
//打印博客的long型id
Long blogId = currentBlog.getId();
System.out.println("单篇博客id"+blogId);
前端页面的html及js脚本
<button type="button" style="margin-left: 100px"
onclick="deleteBlog(${curBlog.id})"
class="layui-btn layui-btn-primary layui-btn-sm">
<i class="layui-icon"></i> </button>
<script type="text/javascript">
function deleteBlog(id) {
alert(id);
return;
/**
if (!confirm("确定要删除这篇博客吗?")) {
return;
}
$.ajax({
type: "POST",
url: "<%=basePath%>blogDetailServlet?action=delete",
data: { "id": id },
success: function (result) {
if (result == 1) {
alert("当前博客删除成功"); if ($("#currPage").val() == 1){
location.href = "<%=basePath%>blogDetailServlet?action=showOne";
} else {
location.href = "<%=basePath%>blogDetailServlet?action=showOne¤tPage=${pager.currentPage-1}";
}
} else {
alert("当前博客删除失败");
}
}
}); */
}
</script>
控制台打印出的博客id
前端页面弹出的提示窗口的博客id
可以明显看出两者的值不一样,后台实际设置的值是156231237764100358 ,而前端页面获取到的值是156231237764100350,前端将后台传过来的长整型数值的最后一位数视为’0’ 。
(2)再探EL表达式取字符串格式long型数值
起初我以为是long型数字太长不能在页面中显示,后来我又用字符串型的数字来测试,然而结果仍然很失望。
后台java代码设置字符串格式的长整数字的属性
BlogDetail currentBlog = pageModel.getDataArray().get(0);
request.setAttribute("curBlog", currentBlog);
int categoryId = currentBlog.getCategoryId();
//打印博客的long型id
Long blogId = currentBlog.getId();
System.out.println("单篇博客id"+blogId);
//在requeset中设置字符串格式的长整数字
request.setAttribute("blogId",blogId+"" );
jsp页面代码
<button type="button" onclick="javascript:alert(${blogId})" class="layui-btn layui-btn-primary" >
<i class="layui-icon">长整数测试</i>
</button>
新的弹窗
从前端页面的提示窗口来看,使用字符串形式的长整数字仍不能正常显示。如果前端一直不能正常显示长整型的数字,这将是一个巨的灾难,毕竟谁也不能保证一直不在前端使用大数字。
(3)最后一试----给EL表达式加引号
后来看到在超链接中同样使用EL表达式却能跳转到正确的页面。这引起了我的兴趣,我估计是用因为在超链接中用了引号的原因。在超链接的href属性的内容必须用引号包裹起来,而整个超链接使用了双引号,那么href 属性的内容(即链接地址)则只能用单引号了。

而以上示例中调用Javascript脚本方法时,其中却只有一个外部的双引号,而无单引号。

准备尝试在EL表达式两侧加上单引号
<!--onclick事件的脚本方法,对EL表达式两侧加上单引号-->
<button type="button" onclick="javascript:alert('${blogId}')" class="layui-btn layui-btn-primary" >
<i class="layui-icon">长整数测试</i>
</button>
前端页面显示出正确的long型数字
3.总结
EL表达式很好用,但有的时候也得注意一些小细节。在获取比较小的数字或位数较短的数字时,可以不用引号将EL表达式包含起来,但在获取位数较长的long型数字时,要注意一定得使用引号(" "或’ ')将EL表达进包裹起来,防止获得尾数充零的的错误值。
long型长整数字在前端页面显示异常及其解决方法的更多相关文章
- nginx+php-fpm配置后页面显示空白的解决方法(yum形式的安装)
OS: Ubuntu 15.04 由于nginx与php-fpm之间的一个小bug,会导致这样的现象: 网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实 ...
- nginx+php-fpm页面显示空白的解决方法
在nginx与php的环境中,配置了一个wordpress,访问时发现php的页面一直显示空白,起初以为是权限问题,将权限改成755后还是不行. 然后,开启nginx和php的日志,但在日志里也没 ...
- nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题
For reference, I am attaching my location block for catching files with the .php extension: location ...
- 关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法
关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法 题设: 经常使用FusionCharts图表的朋友可能会遇到这个问题.就是在FusionCharts显示的时候有时候 ...
- ubuntu下mysqli_connect()显示未定义,mysqli_fetch_all()显示未定义 解决方法
mysqli_connect()显示未定义解决方法: http://www.cnblogs.com/misoag/archive/2013/01/24/2874439.html 让apache.php ...
- photoshop菜单显示不全的解决方法
photoshop菜单显示不全? 解决方法,选择菜单 编辑->菜单,下拉菜单选择photoshop默认值
- SVN 不显示状态图标--解决方法
[SVN 不显示状态图标--解决方法] 在名字前面加空格, 三个六个空格随意: 参考:https://www.cnblogs.com/lzpong/p/6187366.html
- Python3:读取配置dbconfig.ini(含有中文)显示乱码的解决方法
Python3:读取配置dbconfig.ini(含有中文)显示乱码的解决方法 一.原因 Python 3 中虽有encoding 参数,但是对于有BOM(如Windows下用记事本指定为utf-8) ...
- SecureCRT中某些命令提示符下按Backspace显示^H的解决方法
SecureCRT中某些命令提示符下按Backspace显示^H的解决方法 安装了Apache Derby数据库服务器之后,使用ij客户端去连接derby服务端,可是在ij中输入命令的时候,每当输入错 ...
随机推荐
- Aspen安装过程报错总结
前几天一直帮朋友安装Aspen v11,因为之前的老版本总是报错,报错内容大概是证书过期了, 一开始朋友电脑上的老版本的Aspen 8卸载了,删除之前的数据库SqlServer 2012 ,然后重新安 ...
- Delphi 10.4 最新消息
官方发布了关于10.4的消息,译文如下: 做为我们的Delphi,C ++ Builder和RAD Studio的订阅客户,除了获得更新,升级和技术支持等主要好处外,我们还邀请订阅客户参加Beta计划 ...
- 国内OLED产业与三星到底是差之千里还是近在咫尺?
此前,市面上几乎大部分智能手机搭载的刘海屏,都是来自三星的AMOLED屏幕.虽然三星总是被诟病为中国手机厂商提供的是"次品",不过没办法,OLED屏幕的核心技术.产能等都掌握在三星 ...
- BZOJ 4901 [CTSC2017]网络
题解: 只会O(n log^2 n) O(n log n)先留坑 不开long long 0 分!!!! #include<iostream> #include<cstdio> ...
- UltraISO制作manjaro系统盘,使用优盘
下载系统镜像 默认是清华镜像 刻入方式一定要选RAW方式
- sqli-labs注入lesson1-2闯关秘籍
·lesson1 1.判断是否存在注入,并判断注入的类型 其实根据第一关提示 判断注入类型 输入下面的语句进行测试: ?id= 返回界面如下图:说明存在 字符型注入 2. 使用order by 猜测S ...
- Python学习:安装配置pycharm编辑器
我只介绍windows的安装过程,因为mac的安装过程实在是过于简单了,一路继续就可以了. 1. windows安装过程 1.1 下载安装包,软件可以找我领取 ! 根据自己的操作系统进行下载,左侧 ...
- Airflow 使用 Celery 时,如何添加 Celery 配置
背景 前段时间我选用了 Airflow 对 wms 进行数据归档,在运行一段时间后,经常发现会报以下错误: [-- ::,: WARNING/ForkPoolWorker-] Failed opera ...
- java集合对象区别一
Vector和ArrayList 1.vector是线程同步的,所以他也是线程安全的,而ArrayList是线程异步的,是不安全的.如果不考虑到线程的安全因素,一般用ArrayList效率较高. 2. ...
- 转:JS高级学习笔记(8)- JavaScript执行上下文和执行栈
必看参考: 请移步:博客园 JavaScript的执行上下文 深入理解JavaScript执行上下文和执行栈 JavaScript 深入之执行上下文 写在开头 入坑前端已经 13 个月了,不能再称自己 ...