请教java高手最好懂struts-----100

aiyufo 2003-08-27 09:41:24

我想写一个方法,比如方法名为 setFormFiels (ActionForm form,String field,String value)
其中form 为该form的名字,field为要求设置值的字段,value为设置值
现在怎样得到form的所有set方法名,然后根据提供的字段参数进行匹配,得到为这个字段参数设置值的方法,再将value设置给该field字段



假如form1里有一whID字段,该字段的设置方法为
public String setWhID (String whID)
{
this.whID=whID;
return whID;
}


现在写了下面方法
public String setFormFields(ActionForm form,String field,String value)
{
try
{
Class clazz = form.getClass();
Class[] args = new Class[0];
Object[] val=new Object[0];
args[0]=field.getClass();
val[0]=value;
Method method = clazz.getMethod(setMethodName(field), args);
Object object = method.invoke(form, args);
if(object != null)
{
return object.toString();
} else
{
return "";
}
} catch(Exception e)
{
e.printStackTrace();
}
return "";
}

private String setMethodName(String fieldName)
{
return "set" + processNameToUpperCase(fieldName);
}

private String processNameToUpperCase(String name)
{
if(name == null || "".equals(name.trim()))
{
return "";
}
String first = name.substring(0, 1);
return name.replaceFirst(first, first.toUpperCase());
}

接着我用 setFormFiels (form1,"whID","1")调用
可是程序不正确,错误为:
java.lang.ArrahIndexOutOfBoundsException:0
..............................
.................................

...全文
13 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonglife 2003-08-27
  • 打赏
  • 举报
回复
Class[] args = new Class[1]
Object[] val=new Object[1]
pcdll 2003-08-27
  • 打赏
  • 举报
回复
Class[] args = new Class[0];
Object[] val=new Object[0];

为什么用0呢?JAVA下标虽然是0开始,但数量还得用正常数字表示,改成1。
jkit 2003-08-27
  • 打赏
  • 举报
回复

Class[] args = new Class[0];
Object[] val=new Object[0];
改为:
Class[] args = new Class[1];
Object[] val=new Object[1];

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧