网页页面NULL值对浏览器兼容性的影响
网页页面NULL值对浏览器兼容性的影响
近期做项目中一个页面中的input radio出现浏览器兼容性问题。
主要问题:
在谷歌浏览器,360急速模式和搜狗急速模式中给radio初始动态赋值时。checked属性失效,无法选中。注:360急速模式和搜狗急速模式使用了谷歌chorme的内核(又称webkit内核)。
在火狐浏览器中给radio初始动态赋值时,checked属性正常选中。
本来同事以为是浏览器兼容问题,始终未能解决这个问题。后来这个Bug交由我来改动。
初始接到任务时,也怀疑是浏览器兼容问题,但后来细致一想。谷歌这么牛皮的技术实力,出问题的几率应该比較小,遂从代码本身查找问题。后来发现原来是有一个EL表达式的值附了NULL值,影响了radio的选中,才出现了浏览器不兼容的Bug。
总结经验教训。对NULL值的推断。十分必要,特别是页面中JQuery不会对隐性错误进行提示。
先给出问题的代码块。主要功能是依据后台传參选择radio是否选中。
<%-- <c:choose>
<c:when test="${gj.notmodelbad=='1' }">
<input type="radio" name="nobad" value="1" checked="checked" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:when>
<c:when test="${gj.notmodelbad=='2' }">
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" checked="checked" style="margin-left:109.5px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非模块问题</label>
</c:when>
<c:otherwise>
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符。无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:otherwise>
</c:choose> --%>
EL表达式${gj.notmodelbad}的值可能为空,需进行处理。
我的解决方式:加入JQuery。依据后台传參动态赋值。
<div>
<c:choose>
<c:when test="${gj.badtype=='2'}">
<input type="checkbox" value="2" id="nomd" checked="checked"/>
</c:when>
<c:otherwise>
<input type="checkbox" id="nomd" value="2" />
</c:otherwise>
</c:choose>
<label><strong>非模块不良</strong></label> <table class="bdrighttab">
<tr>
<td style="width:100px;"><input id="nobadRad1" type="radio"
name="nobad" value="1" style="margin-left:112px;" /><label
style="margin-left:5px;font-size:14px;">信息描写叙述不符。无法推断</label><br />
<input id="nobadRad2" type="radio" name="nobad" value="2"
style="margin-left:112px;font-size:14px;" /><label
style="margin-left:5px;font-size:14px;">现场分析部件正常。非我司模块问题</label>
<input type="text"
style="background-color:#e4e4e4;border-style:solid;border-color:#B0B0B0;border-width:thin;"
class="otherreason" value="${gj.otherreason}" /></td>
</tr>
<%-- <c:choose>
<c:when test="${gj.notmodelbad=='1' }">
<input type="radio" name="nobad" value="1" checked="checked" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:when>
<c:when test="${gj.notmodelbad=='2' }">
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" checked="checked" style="margin-left:109.5px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非模块问题</label>
</c:when>
<c:otherwise>
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符。无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:otherwise>
</c:choose> --%>
</table>
</div> </div>
JQuery动态赋值:
$(document).ready(function(){ var notmodelbad = ${gj.notmodelbad};
if(notmodelbad=='1'){
$("#nobadRad1").attr("checked",true);
$("#nobadRad2").attr("checked",false);
}
else if(notmodelbad=='2'){
$("#nobadRad1").attr("checked",false);
$("#nobadRad2").attr("checked",true);
} });
后台的.do型方法
// 市场并联交互
@RequestMapping("maMutualGd.do")
public String MaMutualGd(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String type = request.getParameter("type");
int marketjiaohuid = Integer.valueOf(request.getParameter("id"));
String vCode = String.valueOf((request.getParameter("vcode")));
String date_from1 = String.valueOf((request.getParameter("datfrom")));
String date_to1 = String.valueOf((request.getParameter("datto")));
getCurrentInfo(type, vCode, date_from1, date_to1);
List<OdspappTGongdan> odspappTGongdanDtoList = qualityPerformanceService
.getOdspappTGongdanDtoList();
List<OdspappTGongdan> gdlist = new ArrayList<OdspappTGongdan>();
List<OdspappTGongdan> gdcloselist = new ArrayList<OdspappTGongdan>();
for (OdspappTGongdan g : odspappTGongdanDtoList) {
if (g.getJiaohustatus().equals("4")) {
gdcloselist.add(g);
} else {
gdlist.add(g);
}
}
OdspappTGongdan gd = new OdspappTGongdan();
if (type.substring(1, 2).equals("0")) {
gd = gdlist.get(marketjiaohuid);
request.setAttribute("gd", gd);
} else {
gd = gdcloselist.get(marketjiaohuid);
request.setAttribute("gd", gd);
}
GongdanBadJiaohu gj = qualityPerformanceService.getGdJiaohuInfo(
gd.getGdCode(), gd.getZyAccount());
if (gj.getChangestatus() == null || gj.getChangestatus() == "") {
gj.setChangestatus("0");
}
if (gj.getNotmodelbad() == null || gj.getNotmodelbad() == "") {
gj.setNotmodelbad("0");
}
System.out.println("Changestatus:" + gj.getChangestatus());
System.out.println("Notmodelbad:" + gj.getNotmodelbad()); request.setAttribute("gj", gj);
// request.getRequestDispatcher("UserEvaluation.jsp").forward(request,
// response);
return "pages/usersEvaluation/UserMutual";
}
处理后的效果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
补充。此问题另一种简单的处理方式,就是用图片取代radio。选中或不选中,换两张图即可。
问题代码尽管不是本人所写。但也提醒了我对Java空值处理的重要性。以后写代码时一定要增加NULL的推断,有时我们遇到的大多数空指针异常,基本都是未初始化导致的NULL值异常。
网页页面NULL值对浏览器兼容性的影响的更多相关文章
- Null 值对索引排序的影响案例一则
--原SQL 语句如下:select * from (select tmp_tb.*, ROWNUM row_id from (select wpid, customer_id, customer_n ...
- CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- 关于页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
需求 最近在做博客的目录功能,发现一个在现代浏览器间的一个bug,或是称之为差异,即页面滚动值(scrollTop)的获取与设定. 在此之前先说一下关于页面元素的坐标获取,这张图的经典性不必再提. 实 ...
- Web前端页面的浏览器兼容性测试心得(二)搭建原汁原味的IE8测试环境
如果你做的页面被老板或PM要求兼容IE8,你就值得同情了.IE8不支持HTML5,在2017年的前端界,开发者不涉及HTML5标准简直寸步难行.然而,有一个可怕的事实客观存在,那就是IE8是Win7系 ...
- HTML`CSS_网站页面不同浏览器兼容性问题解决
目前,最为流行的浏览器共有五个:分别是ie,Edge浏览器(属于微软),火狐,谷歌(chrome)Safari和Opera五大浏览器. Trident内核:IE ,360,,猎豹,百度: Gecko内 ...
- 从零开始的全栈工程师——html篇1.8(知识点补充与浏览器兼容性)
知识点补充 一.浏览器的兼容问题(关于浏览器的兼容问题 有很多大佬已经解释的很清楚了 这个得自己百度去多花点时间去了解 这里咱们只说一下前面的漏点) 浏览器兼容性问题又被称为网页兼容性或网站兼容性问题 ...
- CSS 多浏览器兼容性问题及解决方案
兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 ...
- css不同浏览器兼容性调试 --- 转自: [http://wo.115.com/?ct=detail&id=31733&bid=1018841]
css不同浏览器兼容性调试 IE6.0,IE7.0与Firefox的CSS兼容性问题1.DOCTYPE 影响 CSS 处理 2.FF: div 设置 margin-left, margin-right ...
- 【转】CSS浏览器兼容性与解析问题终极归纳
1.怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式.为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯. 2.IE6双边距问题:在 ...
随机推荐
- windows ubuntu bcdeditor
双系统. 先装windows,后装ubuntu12.04 为了避免grub引导,所以安装bcdeditor. 平时使用没有什么不适,可是每次linux升级内核以后,grub列表可能就会消失,自然是不能 ...
- js 作用域 ?????
///*第一种情况 */ //var mycars = new Array() //mycars[0] = 0; //mycars[1] = 1; //mycars[2] = 2; //functio ...
- c++ include
#include <>与#include " "区别 如果头文件名在<>中,就会被认为是标准头文件.编译器会在预定义的位置查找该头文件,如果是"& ...
- 微信小程序---账号注册与开发工具
(1)申请帐号 进入小程序注册页 根据指引填写信息和提交相应的资料,就可以拥有自己的小程序帐号. 在这个小程序管理平台,你可以管理你的小程序的权限,查看数据报表,发布小程序等操作. 登录 小程序后台 ...
- SVN文件库移植(转)
SVN文件库移植(转) 分类: 项目管理2013-04-19 11:06 161人阅读 评论(0) 收藏 举报 公司以前用的SVN是安装在windows2003下,用了一年多,现在大家觉得很慢,强烈 ...
- ssh架包下载地址
1.连接MySQL数据库所需架包点击进入官网下载 2.连接Oracle数据库所需架包点击进入官网下载 3.JUnit测试所需架包点击进入官网下载或者点击进入官网下载 4.Struts所需架包点击进入官 ...
- PHP—通过HTML网页请求,PHP页面显示源码不能解析
对于初学者来说,可能会碰到这样一个问题,那就是我们通过html网页,在表单的action中填入后台处理的php文件后,虽然可以跳转到php网页上,但是却显示一大堆php源码而不是处理请求.像这样: ...
- Centos6.8 安装mongo3.6以及权限配置和开启外网链接
目录 安装环境和版本说明,以及参考文档链接 安装MongoDB数据库 运行MongoDB数据库 删除卸载MongoDB 配置MongoDB管理员用户 修改配置文件,允许外网链接 安装配置完成,使用Ro ...
- 14Spring通过注解配置Bean(2)
下面将对13Spring通过注解配置Bean(1)的中Repository.Service.Controller通过注解方式来建立关联. <context:component-scan>元 ...
- *****Python之进程线程*****
Python之进程线程 Python的threading模块 并发编程: 操作系统:位于底层硬件与应用软件之间的一层. 工作方式:向下管理硬件,向上提供接口. 进程:资源管理单位(容器) 线程:最 ...