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]

0

4个回答

教你一个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的功能。

0

[code="xml"]


[/code]
加上extends="struts-default"看看

0

厄,不对,看错地方了,上面的无视啊

0

检查 deleteMedia是否是com.kinrich.action.MediaAction 下的方法。

查看MediaAction 是否编译。或者重新发布下项目。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!