您的位置:首页 > 编程语言 > Java开发

Struts2.5动态方法调用 错误Messages:This method: edit for action product is not allowed!解决方法

2016-06-03 19:03 507 查看

报错信息如下:

Struts Problem Report

Struts has detected an unhandled exception:

Messages:This method: edit for action product is not allowed!

Stack traces

This method: edit for action product is not allowed! - [unknown location]

com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:200)
org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81)
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:113)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)





jsp源代码:
<body>
<table>
<tr>
<th>商品id</th>
<th>商品名称</th>
<th>数量</th>
<th colspan="2">操作</th>
</tr>
<tr>
<td>1001</td>
<td>手机</td>
<td>128</td>
<td><a href="product!edit.action?productId=1001">编辑</a></td>
<td><a href="product!del.action?productId=1001">删除</a></td>
</tr>
<tr>
<td>1002</td>
<td>相机</td>
<td>120</td>
<td><a href="product!edit.action?productId=1002">编辑</a></td>
<td><a href="product!del.action?productId=1002">删除</a></td>
</tr>
</table>
</body>

java源代码

public class ProductAction extends ActionSupport {
private int productId;

/**
* @return the productId
*/
public int getProductId() {
return productId;
}

/**
* @param productId
*            the productId to set
*/
public void setProductId(int productId) {
this.productId = productId;
}

/**
* 编辑商品
*/
public String edit() {
System.out.println("编辑商品" + this.productId);
return "edit";
}

/**
* 删除商品
*/
public String del() {
System.out.println("删除商品" + this.productId);
return "del";
}
}


java源代码struts.xml
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="product" class="action.ProductAction">
<result name="edit">/edit.jsp</result>
<result name="del">/del.jsp</result>
</action>
</package>
</struts>

解决方案:修改struts.xml,添加被allowed的方法
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="product" class="action.ProductAction">
<result name="edit">/edit.jsp</result>
<result name="del">/del.jsp</result>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Monaco; color: rgb(79, 118, 203);"><span style="white-space:pre">			</span>  <!-- 添加被允许的两个方法 --></p><span style="color:#ff0000;"><span style="white-space:pre">			</span><allowed-methods>del,edit</allowed-methods></span>
</action>
</package>
</struts>
  
注意:若出现下面这个错误

Struts Problem Report

Struts has detected an unhandled exception:

Messages:There is no Action mapped for namespace [/] and action name [product!del] associated with context path [/Chapter03].

Stacktraces

There is no Action mapped for namespace [/] and action name [product!del] associated with context path [/Chapter03]. - [unknown location]

应修改struts.xml文件:

<span style="color:#3933ff;"><struts>
<constant name="struts.devMode" value="true" />
</span><span style="color:#ff0000;"><constant name="struts.enable.DynamicMethodInvocation" value="true" /></span>
<span style="color:#ff0000;"></span><pre name="code" class="html" style="font-size: 11px;"><span style="color:#3933ff;">……</span>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息