LookupDispatchAction使用示例

Posted on 2007-09-19 13:31 優雅Dě頽廢 阅读(544) 评论(1)  编辑  收藏 所属分类: Struts

LookupDispatchAction是DispatchAction的子类。他的作用是将多个响应用户请求的Action方法放置在同一个Action中。

LookupDispatchAction主要适合用于页面中同一个表单具有多个提交按钮,每个提交按钮要递交给不同的Action处理方法的情况。

LookupDispatchAction所执行的方法也是依据页面传递的参数来确定的。而具体执行哪个Action方法则是由用户提交参数的值、资源文件、定义的映射方法所共同决定的。

具体请参考下面的例题:

1、先在JSP页面中使用如下的提交按钮:

#test.jsp

  <html:form action="/test">
      <!--property属性的值一定与ActionMapping中的parameter属性的值相同-->
     <html:submit property="method"><bean:message key="button.add"/></html:submit>
     <html:submit property="method"><bean:message key="button.delete"/></html:submit>
    </html:form>

2、在Struts的配置文件中设置paramerter属性:

#struts-config.xml

<!-- parameter属性指页面中按钮的名称,其中的name属性中的ActionForm随便建个就行我的是空的 -->

<action path="/test" type="action.TestLookUpDispatchAction" scope="request" input="test.jsp" parameter="method" ></action>

3、创建一个继承LookupDispatchAction的类,名叫TestLookUpDispatchAction放在action包下:

#TestLookUpDispatchAction.java

package action;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.LookupDispatchAction;

public class TestLookUpDispatchAction extends LookupDispatchAction {

 @Override
 protected Map getKeyMethodMap() {// 定义资源文件关键字与Action方法之间的映射关系
     Map<String, String> map = new HashMap<String, String>();
     map.put("button.add", "add");
     map.put("button.delete", "delete");
     return map;
 }

 // 自定义的方法
 public ActionForward add(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  System.out.println("执行add方法成功");
  return null;
 }

 // 自定义的方法
 public ActionForward delete(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  System.out.println("执行delete方法成功");
  return null;
 }
}
4、在资源文件中为每个标记定义显示信息:

message.properties

button.add=add
button.delete=delete

这样就OK了,你可以试一下是否能调用到自己想要的方法。有什么问题可以联系我。

Feedback

# re: LookupDispatchAction使用示例  回复  更多评论   

2014-05-13 18:26 by sddsd
dsdsds

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 13, comments - 1, trackbacks - 0, articles - 0

Copyright © 優雅Dě頽廢