背景说明:
技术背景:jsp+structs2
起因是写一个页面上的操作,很简单的增删改动作
然后自己没有看底层的代码,自作聪明的删除了。。
public XX(PageVO pageVO, User user, ActionMapping mapping, ActionForm form, HrmsHttpRequest request, HrmsHttpResponse response, HttpSession session) throws HrmsException {}
原指原味的参数类型
public XX(PageVO pageVO,ActionMapping mapping, ActionForm form, HrmsHttpRequest request) throws HrmsException {}
5.一脸懵逼,先是检查了一遍又一遍bean的配置,路径的路由,jsp文件都检查了下发现没问题。
6. 后面根据这报错的提示信息搜索到了报错的代码位置,简化后代码如下:
- try {
- method = (Method) methods.get(name);
- if (method == null) {
- method = this.getClass().getMethod(name, types);
- methods.put(name, method);
- }
- }
先是从缓存中获取方法名,发现没有,就通过反射来获取类中对应的这个方法跟属性,
在放到这个缓存methods中
types里的内容是这样的:
发现了问题没有,没有发现没事,我们在往下走一步,看报错提示信息
就发现,这里的参数是固定的,你删除了参数,它就找不到这一个对象参数的方法了,它加载的是一个固定的参数列表。
后来回过头来看这个封装的方法,参数个数类型必须按照这个来写,不然就会报找不到这个方法的错误
在回头上下其他地方使用这个方法的情况,,果然也是有无用的参数,但是仍保留。
所以在不知道底层代码的情况下,还是别自作聪明了,别秀操作。
就像之前网上出现过这种情况,有一个神奇的参数注释是这样的//别删除,我也不知道它是做什么用的,但是删了服务就报错了。。