一次排除异常的经历
错误描述
在sakai中,以普通注册用户登录系统,在个人资料页面的“基本信息”和“工作信息”模块中单击“编辑”按钮无反应(无编辑界面出现)并且按F12在Console窗口中出现500错误。
同时在Tomcat的程序窗口中出现如下异常提示:
排错过程
先在IDEA中单步调试,希望能发现异常的触发点,但最终进入了数个.class文件,无法发现触发异常的语句。
之后仔细查看异常的堆栈跟踪,发现有如下信息:
at wicket.contrib.tinymce.settings.TinyMCESettings.lazyLoadTinyMCEResource
(TinyMCESettings.java:971)
和
at wicket.contrib.tinymce.TinyMceBehavior.renderHead(TinyMceBehavior.java:60)
两处,而TinyMCE是一个具有富文本编辑功能的组件,而在MyInfoEdit.java文件和MyBusinessEdit.java中都有如下语句
/* In MyBusinessEdit.java */ businessBiography.add(new TinyMceBehavior(new TextareaTinyMceSettings()));
/* In MyInfoEdit.java */ personalSummary.add(new TinyMceBehavior(new TextareaTinyMceSettings()));
因此怀疑是TinyMCE组件的问题。果然,将这两处的语句注释掉,并且在对应的MyBusinessEdit.html和MyInfoEdit.html中将相应的wicket标签注释掉。
重新编译以后问题解决。
讨论
现在的解决方案只是很简单地把两个使用了TinyMCE控件的地方去掉,但更深层次的问题应该处在TinyMCE自己的内部逻辑上。有待进一步研究。