`
hilly
  • 浏览: 50592 次
  • 性别: 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的应用

    **2.2 使用示例** 假设有一个编辑文章的表单,其中包含“保存”和“取消”两个按钮,这两个按钮都使用相同的名称 `action`: ```xml ****.EditArticleAction" name="ArticleForm" scope="request" parameter=...

    struts LookupdispathAction类使用实例

    5. **使用示例** - 创建一个 `MyLookupDispatchAction` 类,继承自 `LookupDispatchAction`。 - 在类中定义如 `doSave()`, `doLoad()`, `doUpdate()` 等方法,分别处理保存、加载和更新操作。 - 在 `struts-...

    J2EE_高级Action

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

    LookUpDispachAction的用法详解

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

    JavaEE框架 Struts_In_Action(中文版)

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

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

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

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

    因此,在对本系统进行架构设计的时候,考虑建立一个抽象的BaseAction类,该类继承LookupDispatchAction,实现LookupDispatchAction类中的getKeyMethodMap方法,在方法中返回本系统中请求参数值与资源文件中参数值的...

    整合Struts_Hibernate_Spring应用开发详解

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

    Struts开发指南03

    LookupDispatchAction则能根据提交表单按钮的名称来调用相应的方法。 在Struts的工作流程中,一旦Action执行完毕,它会返回一个ActionForward对象。ActionForward代表一个URL,指示下一步应该去哪里,可以是另一个...

    struts1深入学习

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

    struts1.x技术课程讲解.pdf

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

    struts教程

    #### 四、使用过滤器(Filter)解决中文问题 - **Servlets部分**: - 创建自定义过滤器类,实现`Filter`接口。 - 在过滤器中设置请求和响应的字符编码。 - **Struts-config.xml部分**: - 不需要特别配置,但需要...

    struts1.x和mysql整合的登陆例子

    在这个例子中,可能会使用`LookupDispatchAction`,这是一个特殊类型的Action,它允许根据用户提交的按钮值(submit标签的name属性)来调用不同的业务方法。 在用户界面设计中,静态验证是先于服务器端验证的一步,...

    struts初级教程

    - **LookupDispatchAction**:基于表单提交的按钮名称调用不同方法。 5. **Taglib** Struts提供了自定义标签库(Taglib),如`struts-bean`、`struts-html`、`struts-logic`和`struts-nested`,以及`struts-tiles...

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

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

    java处理一个form多个submit

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

    EventDispatchAction类处理一个form多个submit

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

Global site tag (gtag.js) - Google Analytics