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

报错信息如下:

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>

 
  





  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值