一般来说,我们使用Struts的ActionForm时,有时候需要对它进行设置在传入页面,通常写法是这样:
HandleArticleForm outForm = new HandleArticleForm();
......// 进行处理
request.setAttribute("HandleArticleForm ",outForm);// 传入页面
可以看出,outForm的类名是个硬编码,如果outForm 修改了类名的话,这个地方必须修改,而这个是使用Eclipse的重构工具是无法完成的,我们需要手工改动,费时费力容易出错.
但是我们可以用Class.Name来解决这个问题,请看下列函数:
public static String getClassName(Object obj){
String allName=obj.getClass().getName();
String path=obj.getClass().getPackage().toString();
path=path.replaceAll("package ","");
path=path+".";
return allName.replaceAll(path,"");
}
这个函数利用了类的类名和包路径取得了类的名称,利用它上面的写法将改写成这样:
HandleArticleForm outForm = new HandleArticleForm();
......// 进行处理
request.setAttribute(ClassUtil.getClassName(outForm),outForm);// 传入页面
这就消除了硬编码,重构时就可以少一些包袱了.
