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

Struts2 动态方法调用小问题

2014-03-11 10:04 309 查看
今天,在用Struts2中Action接收参数时,在URL中输入:http://localhost:8080/Struts2_03/user/user!add,出错:

There is no Action mapped for namespace [/user] and action name [user!add] associated with context path [/Struts2_03].
struts.xml配置为:

<?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" />
<package name="font" namespace="/user" extends="struts-default">

<action name="user" class="com.zhang.HelloAction">
<result >
/Studentadd_success.jsp
</result>
</action>

</package>
</struts>
HelloAction.java:
package com.zhang;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport
{
private String name;
private int age;

public String add()
{
System.out.println("name="+name);
System.out.println("age+"+age);
return SUCCESS;
}

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

public int getAge()
{
return age;
}

public void setAge(int age)
{
this.age = age;
}

}


找来找去,原来是动态方法调用(DMI)这方面出了问题;

原因:struts2中默认不允许使用DMI;

所以:需要在配置文件中将这句加上: <constant name="struts.enable.DynamicMethodInvocation" value="true"/> 这样大家在地址栏动态输入就可以得到预期的页面;

这个属性是设置Struts2是否支持动态方法调用,为true时是支持,为false时是关闭动态方法调用!

配置后的struts.xml:

<?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.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<package name="font" namespace="/user" extends="struts-default">

<action name="user" class="com.zhang.HelloAction">
<result >
/Studentadd_success.jsp
</result>
</action>

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