`
wanjianfei
  • 浏览: 319098 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LookupDispatchAction类使用说明

阅读更多
org.apache.struts.actions.LookupDispatchAction类别是 DispatchAction 类别的子类,与DispatchAction类似的是,它透过请求上的参数来决定该执行哪一个方法,不过LookupDispatchAction多了查 询讯息资源档案的功能,LookupDispatchAction的用处之一,就是当一个表单中包括两个以上的按钮时,可以透过查询讯息资源档来确定相对 应的动作。

直接以实例来说明,在继承LookupDispatchAction之後,您要重新定义getKeyMethodMap()方法,并定义好自己的相关处理方法,例如:
  • EditAction.java
package onlyfun.caterpillar;

import javax.servlet.http.*; 
import org.apache.struts.action.*; 
import org.apache.struts.actions.*;

public class EditAction extends LookupDispatchAction { 
    protected Map getKeyMethodMap() { 
        Map map = new HashMap();
        map.put("button.save", "save");
        map.put("button.preview", "preview"); 
        map.put("button.reset", "reset"); 
        return map; 
    }

    public ActionForward save(ActionMapping mapping, 
                              ActionForm form, 
                              HttpServletRequest request, 
                              HttpServletResponse response) 
                                 throws Exception { 
        // ...... 
    }

    public ActionForward preview(ActionMapping mapping, 
                              ActionForm form, 
                              HttpServletRequest request, 
                              HttpServletResponse response) 
                                 throws Exception { 
        // ...... 
    }

    public ActionForward reset(ActionMapping mapping, 
                              ActionForm form, 
                              HttpServletRequest request, 
                              HttpServletResponse response) 
                                 throws Exception { 
        // ...... 
    }                                                              
}

假设讯息资源档中包括以下的讯息:
  • messages.properties
button.save=Save
button.preview=Preview
button.reset=Reset

为了要使用LookupDispatchAction,在struts-config.xml中定义请求参数中该有的名称:
  • struts-config.xml
...
   <action path="/edit"
           type="onlyfun.caterpillar.EditAction" 
           parameter="method" 
           name="editForm"/>
... 

现在假设您的表单页面包括以下的内容:
...
<form name="editForm" method="post"
action="/strutsapp/edit.do">
.....
<input type="submit" name="method" value="Save"/>
<input type="submit" name="method" value="Preview"/>
<input type="submit" name="method" value="Reset"/>
</form>
...

当您按下任一个按钮时,请求参数中会包括method=Save或是method=Preview或是method= Reset,假设是method=Save好了,LookupDispatchAction会根据它作为value,在讯息资讯档找到对应的key,然後 根据key与getKeyMethodMap()得知要执行的方法为save()方法。

那么关於国际化讯息管理的部份呢?例如想要在表单按钮上使用中文?
...
<form name="editForm" method="post"
action="/strutsapp/edit.do">
.....
<input type="submit" name="method" value="存档"/>
<input type="submit" name="method" value="预览"/>
<input type="submit" name="method" value="重设"/>
</form>
...

一样的,您的讯息档案中必须包括下面的内容:
  • messages.properties
button.save=存档
button.preview=预览
button.reset=重设

然後,您要使用native2ascii将讯息档案转换为Unicode编码,例如:
native2ascii messages_zh_TW.txt messages_zh_TW.properties

接下来的问题是,浏览器发送过来的中文参数,为了要能正确的解析,要使用request的 setCharacterEncoding("Big5"),这样才能得到正确的中文参数,但是在什么地方作这个动作?您可以在Servlet Filter中作这件事,另一个可能的地方则是 ActionForm 的reset()方法中,例如:
package onlyfun.caterpillar;

public class UserForm extends ActionForm {
......

public void reset(ActionMapping mapping,
HttpServletRequest request) {
try {
request.setCharacterEncoding("Big5");
.......
}
catch(Exception e) {
....
}
}
}


这样您的按钮就可以使用中文讯息了。

如果您愿意的话,可以搭配使用 <bean:message> 来使用上述的功能,直接由标签来管理讯息档案中的讯息。

分享到:
评论

相关推荐

    LookupDispatchAction 是使用方法

    默认情况下,Struts1的动作类只有一个`execute()`方法,但使用`LookupDispatchAction`时,可以定义多个处理特定请求的方法,每个方法对应一个特定的请求参数。 二、配置与使用 1. 配置struts-config.xml 首先,需要...

    Struts(二)List_Map_LookupDispatchAction_Validate

    3. **List和Map**: 在描述中提到的`List_Map_LookupDispatchAction_Validate`可能是指在处理请求时,LookupDispatchAction使用List和Map来组织和存储数据。List是一个有序的集合,可以按索引访问,适合存储一系列...

    DispatchAction、LookupDispatchAction、SwitchAction的应用

    为了使用 **DispatchAction**,首先需要继承该类并实现具体的业务逻辑方法。例如: ```java import org.apache.struts.actions.DispatchAction; public class ArticleAction extends DispatchAction { /** * ...

    struts LookupdispathAction类使用实例

    Struts LookupDispatchAction 类是Apache Struts 框架中的一种高级控制器,它扩展了`DispatchAction`类,提供了一种更加灵活的方式来处理请求映射。在 Struts 框架中,Action 是业务逻辑的核心组件,负责接收HTTP...

    基于JAVA SMART系统-系统框架设计与开发(源代码+论文).zip

    其中的LookupDispatchAction类是允许你指定一个具有多个方法的类,每一个方法的调用都基于配置文件中指定的一个特殊请求参数值,利用该参数值反向查询资源绑定,并将它与类中的一个方法进行匹配。从这些功能可以看出...

    LookUpDispachAction的用法详解

    下面将详细介绍LookUpDispatchAction的使用方法以及其在Struts应用中的重要性。 首先,让我们理解LookUpDispatchAction的核心概念。通常,一个Action类对应一个或多个业务逻辑方法,每个方法处理特定的用户请求。...

    J2EE_高级Action

    在Web开发中,特别是使用Struts框架时,经常会遇到一个问题:当一个简单的组件(如购物车)需要执行多种操作(如添加商品、删除商品、修改商品数量等),而Struts的`Action`类通常只有一个`execute`方法时,如何设计...

    EventDispatchAction类处理一个form多个submit

    与`LookupDispatchAction`相比,它的使用更为便捷,无需与属性文件关联,也不需要手动在`getKeyMethodMap`方法中进行key和Action方法的映射。 #### 三、EventDispatchAction的工作原理 `EventDispatchAction`通过`...

    Struts2教程:处理一个form多个submit.doc

    在处理一个表单(form)中存在多个submit按钮的情况时,Struts2提供了一种优雅的方式来区分用户点击了哪个按钮,而无需像Struts1那样使用额外的动作类(如LookupDispatchAction或EventDispatchAction)。 在传统的...

    java处理一个form多个submit

    在 Struts1 中,使用 LookupDispatchAction 动作可以处理含有多个 submit 的 form。但是,这种方式需要访问属性文件,还需要映射,比较麻烦。从 Struts1.2.9 开始,加入了 EventDispatchAction 动作,该类可以通过 ...

    struts2.0之action

    Struts 2.0还提供了一种方式来改变默认调用的方法,这类似于Struts 1.x的`LookupDispatchAction`。在`struts.xml`中,可以直接指定Action的执行方法,例如: ```xml &lt;result name="success"&gt;/HelloWorld.jsp ...

    struts教程

    - **LookupDispatchAction**: - 类似于`DispatchAction`,但支持通过查找(lookup)来确定要执行的方法。 #### 十、Struts之Tiles - **Tiles概述**: - 是Struts的一个扩展插件,用于管理Web应用中的布局和模板...

    整合Struts_Hibernate_Spring应用开发详解

    - **使用LookupDispatchAction:** 支持根据请求参数动态选择Action执行。 - **使用ForwardAction:** 实现简单的页面转发。 - **使用IncludeAction:** 实现页面包含。 - **使用SwitchAction:** 基于条件选择...

    struts2学习笔记

    这类似于Struts1中的查找器(LookupDispatchAction)或切换器(SwitchingAction),但更加灵活和模块化。 总的来说,Struts2的Action设计使得开发者能够更加专注于业务逻辑,而无需关心底层的请求处理细节。同时,...

    轻量级J2EE企业应用实战——Struts+Spring+Hibernate整合开发 源码第二部分

    `DispatchAction`和`LookupDispatchAction`是Struts中的特殊动作,前者允许基于请求参数来调用不同的方法,后者则是在`DispatchAction`基础上进一步细化,根据请求的参数值查找并执行相应的方法。 `DynaActionForm`...

    struts1.x技术课程讲解.pdf

    - **LookUpDispatchAction**:与 DispatchAction 类似,但更灵活,可以动态地确定方法名。 2. **ActionServlet**:Struts1.x 的核心组件,负责初始化框架、接收 HTTP 请求并将请求分发给相应的 Action 类处理。 3. ...

    struts1深入学习

    struts1学习资料:里面包含struts源码工程 ActionServlet DispatchAction Action LookUpDispatchAction的用法 还包含html logic bean tiles标签的详细使用方法和validate验证框架的具体案例

    轻量级J2EE企业应用实战源码 3 下

    1. **LookupDispatchAction**: 这个文件可能涉及到Struts框架中的`LookupDispatchAction`,这是一个用于处理多视图的Action,它可以根据用户请求的参数来决定调用哪个业务方法。这在实现复杂的视图跳转和逻辑控制时...

    JavaEE框架 Struts_In_Action(中文版)

    JavaEE框架 Struts_In_Action(中文版) Struts Action Struts_In_Action LookupDispatchAction DispatchAction 对Action讲的比较仔细,可以深入的了解Struts框架里的基本原理。

Global site tag (gtag.js) - Google Analytics