一水空间
生命短暂,道也漫长
BlogJava
首页
新随笔
联系
聚合
管理
随笔-2 评论-0 文章-0 trackbacks-0
2009年12月15日
反射练习之action消除execute方法
/**
* @author yzy
* 作为BaseAction 供其他Action 继承, 其他Action 不需要写execute(mapping, form, request, response)
* 方法,直接写与mapping.getParameter()[struts-xml 的<action> 中parameter] 对应的 方法名(mapping, form, request, response)方法;
*
* 或者mapping.getPath()[struts-xml 的<action> 中path] 固定写为 method_0,直接写与mapping.getParameter()对应的
* 方法名(String ... str)方法
*/
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
actionForward = mapping.findForward("forward");
if("method_0".equals(mapping.getPath())){
method_0(mapping, form, request, response);
} else {
try {
// 正常Struts 方法名(ActionMapping mapping, ActionForm form,
// HttpServletRequest request, HttpServletResponse response)
this.getClass().getMethod(mapping.getParameter(), ActionMapping.class, ActionForm.class,
HttpServletRequest.class, HttpServletResponse.class).invoke(this, mapping, form, request, response);
} catch (Exception e) {
System.err.println("no serach method");
}
}
return actionForward;
}
/*
* 方法名(String ... str)
*/
private void method_0(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
String param = request.getQueryString();
String[] params = param.split("&");
int len = params.length;
Class[] classes = new Class[len - 1];
for(int i = 0; i < len; i++){
classes[i] = String.class;
}
try {
this.getClass().getMethod(mapping.getParameter(), classes).invoke(this, params);
} catch (Exception e) {
System.err.println("no serach method");
// str[] 可能参数个数不一致
}
}
posted @
2009-12-15 19:52
秒速4键 阅读(265) |
评论 (0)
|
编辑
收藏
<
2009年12月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
struts(1)
随笔档案
2009年12月 (1)
文章分类
css
java
script
struts
搜索
最新评论
阅读排行榜
1. 反射练习之action消除execute方法(265)
评论排行榜
1. 反射练习之action消除execute方法(0)