Struts2中DMI(動態方法呼叫)的一些問題
<package name="front" namespace="/front" extends="struts-default">
<default-action-ref name="index" />
<action name="helloword" class="struts.IndexAction">
<result name="add">
/hello.jsp
</result>
<result name="love">
/love.jsp
</result>
</action>
</package>
大家看上面程式,指定了action的class="struts.IndexAction“
再來看IndexAction類
package struts;
import com.opensymphony.xwork2.ActionSupport;
public class IndexAction extends ActionSupport{
public String add(){
return "add";
}
public String love(){
return "love";
}
}
裡面並沒有excute()方法,這時大家給以這樣配置<action name="helloword" class="struts.IndexAction" method="add">就可以返回IndexAction類中add方法的值,
但是這種方法不推薦!推薦的方法是動態呼叫,也就是DMI.
但是:如果這樣輸入的話,會報錯(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="true"/>這樣大家在位址列動態輸入就可以得到預期的頁面