ognl.MethodFailedException: Method "setId" failed for object

jx1026544089 2011-06-01 03:48:13
15:28:30,890 WARN com.opensymphony.xwork2.ognl.OgnlValueStack:60 - Error setting expression 'id' with value '[Ljava.lang.String;@1be20c'
ognl.MethodFailedException: Method "setId" failed for object com.zxcs.action.user.DeleteAllUsersAction@16c1227 [java.lang.NoSuchMethodException: com.zxcs.action.user.DeleteAllUsersAction.setId([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1285)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:77)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.Ognl.setValue(Ognl.java:737)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:209)
at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:173)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:160)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:151)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:288)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:199)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodException: com.zxcs.action.user.DeleteAllUsersAction.setId([Ljava.lang.String;)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1226)
... 65 more
/-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: com.zxcs.action.user.DeleteAllUsersAction.setId([Ljava.lang.String;)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1226)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1474)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:77)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2245)
at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
at ognl.SimpleNode.setValue(SimpleNode.java:301)
at ognl.Ognl.setValue(Ognl.java:737)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:209)
at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:173)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:160)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:151)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:288)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:199)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at
...全文
2384 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
dielianhua813 2011-12-07
  • 打赏
  • 举报
回复
惨淡人生,我也是这样的问题,而且是一个简单的类型转化
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
你加一下我的qq吧。296180762
[Quote=引用 24 楼 jx1026544089 的回复:]
引用 23 楼 liuyuhua0066 的回复:

你修改后打印的id还是这?
引用 22 楼 jx1026544089 的回复:
控制台输出 id:[Ljava.lang.String;@6dd8e1 这条语句是什么意思?


这是拆分以后转化成数组,但批量删除处理的时候只得到一条数据
[/Quote]
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 liuyuhua0066 的回复:]

你修改后打印的id还是这?
引用 22 楼 jx1026544089 的回复:
控制台输出 id:[Ljava.lang.String;@6dd8e1 这条语句是什么意思?
[/Quote]

这是拆分以后转化成数组,但批量删除处理的时候只得到一条数据
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
你修改后打印的id还是这?
[Quote=引用 22 楼 jx1026544089 的回复:]
控制台输出 id:[Ljava.lang.String;@6dd8e1 这条语句是什么意思?
[/Quote]
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
控制台输出 id:[Ljava.lang.String;@6dd8e1 这条语句是什么意思?
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复

private String id;//setter and getter省略 自己生成
String[] splitStr = id.split(";");
for (int i = 0; i < splitStr.length; i++) {

this.service.deleteAll(splitStr[i]);

}


如果还不行,把你的id打印出来看看。
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
大哥,String[] splitStr=id.split(";")有错误,
错误信息: Cannot invoke split(String) on the array type String[]
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
String[] splitStr=id.split(";");
for(int i = 0; i < splitStr.length; i++){
this.service.deleteAll(splitStr[i]);
}
……
[Quote=引用 18 楼 jx1026544089 的回复:]
String[] splitStr=id.split(";");
for(int i = 0; i < id.length; i++){
this.service.deleteAll(splitStr[i]);
}
return SUCCESS

这样写还是有错误,不过是语法错误,还是我自己来吧,谢谢这位一直帮我解决问题的大哥
[/Quote]
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
String[] splitStr=id.split(";");
for(int i = 0; i < id.length; i++){
this.service.deleteAll(splitStr[i]);
}
return SUCCESS

这样写还是有错误,不过是语法错误,还是我自己来吧,谢谢这位一直帮我解决问题的大哥
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
我那个是省略了……汗
[Quote=引用 16 楼 jx1026544089 的回复:]
for里面不要循环体吗,感觉有错误
[/Quote]
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
for里面不要循环体吗,感觉有错误
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
因为你的页面用的是“;”分割的,你就用
String[] splitStr=id.split(";");
for(){
this.service.deleteAll(splitStr[i]);
}
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
太感谢 liuyuhua0066 ,调用String的split方法拆分id怎么弄啊
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
我想大概知道是什么原因了:
你在jsp页面用的是result = result + deId[i].value + ";"拼装id,这样传回action就变成String类型了,而你的action里面的Integer[] id这样导致类型不匹配。

你可以在action里将id定义为String类型的,然后调用String的split方法拆分id,再利用循环执行删除操作。

jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
实体id是int类型
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
就是我复选框的value值,也就是我的user id号,我想完成批量删除
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
另外你的实体类的id主键是什么类型的?String还是Integer?
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
你的页面的alert(result)是什么结果?
jx1026544089 2011-06-01
  • 打赏
  • 举报
回复
function deleteAll() {
var result="";
var flag = false;
var deId = document.getElementsByName("usId");

for (var i = 0; i < deId.length; i++) {

if (deId[i].checked) {
result = result + deId[i].value + ";";
flag = true;
}
}

if (!flag) {
alert("请选择需要删除的用户!");

}
if (flag) {
alert(result);
window.location.href="deleteAll.action?id='"+result+"'";
return true;

}return false;
}



<s:iterator value="#request.pageResultSet.list" id="us">
<tr>
<td height="20" bgcolor="#FFFFFF"><div align="center">
<input type="checkbox" name="usId" id="checkbox2" value="${us.id}" />
</div></td>

<td height="20" bgcolor="#FFFFFF" class="STYLE6"><div align="center"><span class="STYLE19"><s:property value="#us.username"/></span></div></td>
<td height="20" bgcolor="#FFFFFF" class="STYLE19"><div align="center"><s:property value="#us.type"/></div></td>
<td height="20" bgcolor="#FFFFFF" class="STYLE19"><div align="center"><s:property value="#us.tel"/></div></td>
<td height="20" bgcolor="#FFFFFF" class="STYLE19"><div align="center">192.168.0.124</div></td>
<td height="20" bgcolor="#FFFFFF" class="STYLE19"><div align="center"><s:property value="#us.detail"/> </div></td>
<td height="20" bgcolor="#FFFFFF"><div align="center" class="STYLE21"><s:a href="deleteUser.action?user.id=%{#us.id}" onclick="return del();">删除</s:a> |<s:a href="updatePUser.action?id=%{#us.id}" id="button1">查看</s:a></div></td>
</tr>
</s:iterator>
liuyuhua0066 2011-06-01
  • 打赏
  • 举报
回复
按正常的逻辑,你是要根据页面传的id,调用service层,删除id对应的记录。
你把你的jsp页面贴出来。
[Quote=引用 6 楼 jx1026544089 的回复:]
ssh这个框架刚学,我也不知道这个值从哪来
[/Quote]
加载更多回复(6)

67,538

社区成员

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

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