首页 > 代码库 > Struts2中DMI(动态方法调用)
Struts2中DMI(动态方法调用)
1 <package name="front" namespace="/front" extends="struts-default"> 2 <default-action-ref name="index" /> 3 <action name="helloword" class="struts.IndexAction"> 4 <result name="add"> 5 /hello.jsp 6 </result> 7 <result name="love"> 8 /love.jsp 9 </result>10 </action>11 </package>
大家看上面程序,指定了action的class="struts.IndexAction“
再来看IndexAction类
1 package struts; 2 import com.opensymphony.xwork2.ActionSupport; 3 4 5 public class IndexAction extends ActionSupport{ 6 public String add(){ 7 return "add"; //返回的result名称 8 } 9 public String love(){10 11 return "love";12 }13 }
里面并没有excute()方法,这时大家给以这样配置
<action name="helloword" class="struts.IndexAction" method="add">
就可以返回IndexAction类中add方法的值,
但是这种方法不推荐!推荐的方法是动态调用,也就是DMI.
比如在地址栏中输入URL:http://localhost:8080/struts2/front/helloword!add (!后面的add是调用的方法名, 默认调用execute())
但是:如果这样输入的话,会报错(There is no Action mapped for namespace [/front] and action name [helloword!add()] associated with context path [/Struts2_10003].)
因为:struts2中默认不允许使用DMI
所以:需要在配置文件中打开: <constant name="struts.enable.DynamicMethodInvocation" value="http://www.mamicode.com/true"/>这样大家在地址栏动态输入就可以得到预期的页面
Struts2中DMI(动态方法调用)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。