1. 程式人生 > >Struts2中DMI(動態方法呼叫)的一些問題

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"/>這樣大家在位址列動態輸入就可以得到預期的頁面