damiean 2011-03-21 14:25
浏览 384
已采纳

java.lang.NoSuchMethodException

[code="java"]java.lang.NoSuchMethodException: com.kinrich.action.MediaAction.deleteMedia()
java.lang.Class.getMethod(Class.java:1581)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:75)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:47)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
[/code]
[color=red]报错[/color]

[color=red]Action[/color]
[code="java"]
public String deleteMedia() throws Exception{
String[] mediaid = request.getParameterValues("mediaid");
for (int i = 0; i < mediaid.length; i++) {
manageMediaDao.deleteMedia(Integer.parseInt(mediaid[i]));
}
return getList();

}

[/code]

[color=red]页面[/color]
[code="java"]

function deleteMedia(){ if(confirm("你确定要删除?")){ form1.action="media!deleteMedia.action"; form1.method="post"; form1.submit(); } }
  <c:forEach var="medialist" items="${medialist}">
                        <tr>
                            <td class="alignM">
                                <input type="checkbox" name="mediaid" value="${medialist.id}" />
                            </td>


/c:forEach
[/code]

[color=red]struts[/color]
[code="java"]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<!-- spring提供的实现类, 作用:根据请求,到spring容器中寻找得到对应的Action -->
value="org.apache.struts2.spring.StrutsSpringObjectFactory" />

<package name="kinrich" extends="struts-default">
    <interceptors>
        <!-- Basic stack -->
        <interceptor-stack name="myStack">
            <interceptor-ref name="logger" />
            <interceptor-ref name="component" />
            <interceptor-ref name="servlet-config" />
            <interceptor-ref name="static-params" />
            <interceptor-ref name="params" />
            <interceptor-ref name="conversionError" />
            <interceptor-ref name="validation" />
            <interceptor-ref name="workflow" />
            <interceptor-ref name="defaultStack" />
        </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myStack" />


    <action name="media" class="mediaAction">
        <result name="show">/ManageMemor.jsp</result>
        <result name="input">/updateToMemor.jsp</result>
    </action>
</package>


[/code]

  • 写回答

4条回答 默认 最新

  • 勤劳的小猿 2011-03-21 15:19
    关注

    教你一个struts2的数组提交方式。
    拿你的为例子:
    多个checkbox.




    页面上有四个checkbox,我这里都是直接写,你的可以用什么迭代之类的。
    那在action类中我只写一个字段来接收所有的checkbox的name;
    class MyAction extends ActionSupport {
    private Integer mediaid;
    //省略get/set
    }
    那么接收提交的时候,mediaid属性是一个包含了四个checkbox的值的一个字符串。
    mediaid的值应该是“1, 2, 3, 4”,中间有一个空格。这个是struts2帮你实现了。
    其实不需要像你那么接收数组。
    在把字符串变成数组:
    String[] mediaids = mediaids.split(", ");
    这样做万无一失。我发现很多人都不会去很好的利用struts2的功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error