这个异常是什么玩意?

shuaiAWP 2009-03-05 11:08:31


public void doPost(HttpServletRequest request, HttpServletResponse response)
{
Map<String,Object> map = request.getParameterMap();
String action = request.getParameter("action");
Set set = map.keySet();
User user = new User();

for (Iterator iterator = set.iterator(); iterator.hasNext();) {
Object name = iterator.next();
Field[] fields = user.getClass().getDeclaredFields();
for(int i = 0;i < fields.length;i++){
fields[i].setAccessible(true);
if(fields[i].getName().equals(name.toString())){
System.out.println(name);
try {
fields[i].set(user,map.get(name.toString()));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}

}
}
}
if (action.equals("save")) {
save(request,response,user);
}

if (action.equals("delete")) {
delete(request, response,user);
}

if (action.equals("edit")) {
edit(request, response,user);
}

}






java.lang.IllegalArgumentException: Can not set java.lang.String field edu.hzu.java3.common.User.name to [Ljava.lang.String;
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
at java.lang.reflect.Field.set(Field.java:657)
at AllServlet.doPost(AllServlet.java:101)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
...全文
475 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelseyes 2009-03-05
  • 打赏
  • 举报
回复
你应该做下类型转换map.get(name.toString())转换成User类型
tuke0001 2009-03-05
  • 打赏
  • 举报
回复
User.name是个String类型

fields[i].set(user,map.get(name.toString())); // 这句map.get(name.toString())取到的是字符串数组类型String[]

你把String[]类型赋值给String类型的name了。

检查下request中的那个对应的Parameter的类型
dawn023 2009-03-05
  • 打赏
  • 举报
回复
参数类型不匹配。
uastation 2009-03-05
  • 打赏
  • 举报
回复
Can not set java.lang.String field edu.hzu.java3.common.User.name to [Ljava.lang.String;
参数的name的值不是一个字符串!
捏造的信仰 2009-03-05
  • 打赏
  • 举报
回复
请求当中“name”参数的值是一个字符串数组,而不是字符串。
cky417 2009-03-05
  • 打赏
  • 举报
回复
很明显是赋值问题了,将User.name对象赋值给String类型出错
KAKUKYOWU 2009-03-05
  • 打赏
  • 举报
回复
不能set 【edu.hzu.java3.common.User.name】 这个属性

fields[i].set(user,map.get(name.toString()));
好像不能set String类型的值吧。。。
KAKUKYOWU 2009-03-05
  • 打赏
  • 举报
回复
非法参数异常,LZ检查一下传递的参数类型。。。
yanghaidong3000 2009-03-05
  • 打赏
  • 举报
回复
反射类型不正确。
酒剑仙 2009-03-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 KAKUKYOWU 的回复:]
非法参数异常,LZ检查一下传递的参数类型。。。
[/Quote]
++
shuaiAWP 2009-03-05
  • 打赏
  • 举报
回复
谢谢


request.getParameterMap()的返回类型是Map类型的对象,也就是符合key-value的对应关系,但这里要注意的是,value的类型是String[],而不是String.

得到jsp页面提交的参数很容易,但通过它可以将request中的参数和值变成一个map,以下是将得到的参数和值打印出来,形成的map结构:map(key,value[]),即:key是String型,value是String型数组。
例如:request中的参数t1=1&t1=2&t2=3
形成的map结构:
key=t1;value[0]=1,value[1]=2
key=t2;value[0]=3
如果直接用map.get("t1"),得到的将是:Ljava.lang.String; value只所以是数组形式,就是防止参数名有相同的情况。

junjun1984 2009-03-05
  • 打赏
  • 举报
回复
public class IllegalArgumentExceptionextends RuntimeException 抛出的异常表明向方法传递了一个不合法或不正确的参数。
weizhaozhe 2009-03-05
  • 打赏
  • 举报
回复
赋值错误

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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