今天程序出现一个奇怪的问题,就是我的页面突然不显示数据了,前台后台都不报错,无论如何调试js,alert()都不出东西,我反复查看代码,发现是在页面载入数据时有一个判断,判断user.showTabPage的值,根据它的值来决定显示页面,我发现这个user是写在session里的,我就到登录方法里去找,找到给showTabPage赋值的方法,发现有这么一段代码:
String showTabPage = HomeConstant.dataViewMap.get(user.getRoleName());
对这段代码debug时,选中HomeConstatnt.dataViewMap时,控制台抛出异常:
Cannot find the field dataViewMap in HomeConstant
我就找到HomeConstant.dataViewMap的定义,发现有这么一段代码:
public static Map<String,String> dataViewMap = new HashMap<String, String>();
static {
dataViewMap.put("all", "ALL");
dataViewMap.put(M_BBS, "BBS");
dataViewMap.put(M_JYW, "JYW");
dataViewMap.put(M_XX, "XX");
dataViewMap.put(S_COMPANY, "BBS");
dataViewMap.put(S_TEAM, "JYW");
dataViewMap.put(S_CAMPUS, "XX");
}
然后我就在想,会不会是定义这个变量的时候没有给它加上final来修饰,因此我就把定义改成这样:
public static final Map<String,String> dataViewMap = new HashMap<String, String>();
再执行,HomeConstant.dataViewMap有值了,不再报错,应该就是没有加final引起的,具体原因以待后叙。
PS:加上final后再运行当时不报错,后来又开始报这个错,可以判定这个错并不是由final引起的,后来判断造成这个错误的原因比较复杂,一个是我本地的编译器出了问题,不能正确编译代码,另外一个就是class文件的输出目录不能正确输出,解决方案是切换workspace,重新下代码,并且将输出路径重新设定一下。
版权声明:本文为wzf7065原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。