struts2选择调用action中的某方法

方法1:
在struts.xml配置
    <package name="product" namespace="/product" extends="struts-default">
        <action name="list" class="web.action.ProductAction" method="list">
            <result>/list.jsp</result>
        </action>
        <action name="add" class="web.action.ProductAction" method="add">
            <result>/add.jsp</result>
        </action>
    </package>

method属性对应这action中的方法名

方法2:
超链接或提交表单时选择用执行的方法
struts.xml
    <package name="product" namespace="/product" extends="struts-default">
        <action name="product" class="web.action.ProductAction">
            <result>/list.jsp</result>
        </action>
    </package>

html:
<a href="/product/product!list.action" />

执行ProductAction中的list方法

表单提交
<form action="/product/product!list.action"></form>


实际应用:
基于方法1:{1}
1.让action的name,method和返回的jsp都叫一样的名字
2.struts.xml如下配置
    <package name="product" namespace="/product" extends="struts-default">
        <action name="{1}" class="web.action.ProductAction" method="{1}">
            <result>{1}.jsp</result>
        </action>
    </package>

当url为/product/list时,{1}就会换成{list},就可以实现调用action中的方法了
需要多个通配符时,可以这样name="{1}_{2}"

基于方法2:!
这个方法配置的action很少,要想返回的视图jsp不能写死,要用这样方法:<result>${params}</result>
action
public class ProductAction extends ActionSupport{
private String result;
public String list{
....
this.setResult("list");
return SUCCESS;
}
}


    <package name="product" namespace="/product" extends="struts-default">
        <action name="product" class="web.action.ProductAction">
            <result>/${result}.jsp</result>
        </action>
    </package>

${result}会被变为list,最终结果是<result>list.jsp</result>,这样就实现了动态的返回视图jsp

你可能感兴趣的:(struts2)