日期:2014-05-17  浏览次数:20655 次

struts2 action 问题
小弟最近在学习struts2的知识,在学习 DMI动态方法调用时 遇到一个奇怪的问题

struts.xml中配置如下

    <package name="admin" namespace="/admin" extends="default">
        <global-results>
         <result>/admin/result.jsp</result>
        </global-results>
        <!-- 使用DMI动态方法调用 -->
        <action name="admin" class="net.nw.action.AdminAction">
        </action>
        
    </package>


jsp页面代码如下

<li><a href="<%=path%>/admin/admin!add.do?fun=添加">添加</a></li>
<li><a href="<%=path%>/admin/admin!delete.do?fun=删除">删除</a></li>
<li><a href="<%=path%>/admin/admin!modify.do?fun=修改">修改</a></li>


运行点击“添加”等连接时,会报错,如下
Struts Problem Report
Struts has detected an unhandled exception: 
Messages: ?There is no Action mapped for namespace [/admin] and action name [admin!add] associated with context path [/Struts2_Test].

 
另外AdminAction.java代码如下

package net.nw.action;

import com.opensymphony.xwork2.ActionSupport;

public class AdminAction extends ActionSupport{

/**
 * 
 */
private static final long serialVersionUID = 1L;

public String add() {
System.out.println("管理员添加 ...");
return SUCCESS;
}

public String delete() {
System.out.println("管理员删除 ...");
return SUCCESS;
}

public String modify() {
System.out.println("管理员修改 ...");
return SUCCESS;
}
}



-----------------------------------------------------------
PS
我用以下这种方式调用时可以的, 不知道哦是什么原因,就是想学习下两种方式的用法

<li><a href="<%=path%>/admin/add.do?fun=添加">添加</a></li>
<li><a href="<%=path%>/admin/del.do?fun=删除">删除</a></li>
<li><a href="<%=path%>/admin/mod.do?fun=修改">修改</a></li>

[struts.xml ]
        <action name="add" class="net.nw.action.AdminAction" method="add">
        </action>
        <action name="del" class="net.nw.action.AdminAction" method="delete">
        </action>
        <action name="mod" class="net.nw.action.AdminAction" method="modify">
        </action>
------解决方案--------------------
在配置中加上如下代码,默认是关闭的
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>