`
zengjinliang
  • 浏览: 308829 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

struts LocaleAction 的用法

阅读更多
package org.apache.struts.webapp.validator;

import java.util.Locale;

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

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public final class LocaleAction extends Action {

    private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());

    public ActionForward execute(ActionMapping mapping,
                 ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response)
    throws Exception {

    // Extract attributes we will need
    HttpSession session = request.getSession();
    Locale locale = getLocale(request);

    String language = null;
    String country = null;
    String page = null;

    try {
            language = (String)
              PropertyUtils.getSimpleProperty(form, "language");
            country = (String)
              PropertyUtils.getSimpleProperty(form, "country");
            page = (String)
              PropertyUtils.getSimpleProperty(form, "page");
        } catch (Exception e) {
           log.error(e.getMessage(), e);
        }

        if ((language != null && language.length() > 0) &&
            (country != null && country.length() > 0)) {
           locale = new java.util.Locale(language, country);
        } else if (language != null && language.length() > 0) {
           locale = new java.util.Locale(language, "");
    }

        session.setAttribute(Globals.LOCALE_KEY, locale);

        if (null==page) return mapping.findForward("success");
        else return new ActionForward(page);

    }

}

在struts-config.xml中添加一个 动态actionFrom

<form-beans>

    ......

    <from-bean name="Language" type="org.apache.struts.DynaActionForm">

           <form-property   name="language"    type="String"/>

           <form-property   name="country"    type="String"/>

   </from-bean>

........//其它的formbean

</form-beans>

 

 

配置Action

<action path="ChangeLocale" name="Language" type="org.apache.struts.actions.LocaleAction">

           <forward name="success" path="default.jsp" />

</action>

注意:forward的name必须为success,path为切换语言后跳转的页面.

 

jsp

<a href="ChangeLocale.do?language=CN&country=zh">简体中文</a>

<a href="ChangeLocale.do?language=TW&country=zh">繁体中文</a>

<a href="ChangeLocale.do?language=US&country=en">English</a>

分享到:
评论

相关推荐

    struts2标签使用方法

    Struts2 标签使用方法 Struts2 标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,Struts2 的主题、模板都提供了很好的扩展性。Struts2 允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂...

    Struts基本用法之国际化

    Struts基本用法之国际化

    Struts2 动态方法调用(十三)

    在Struts2中,动态方法调用(Dynamic Method Invocation,DMI)是一种特性,允许我们通过URL直接调用Action类的方法,而无需在配置文件中显式指定。这在某些情况下提供了更大的灵活性。 在Struts2的动态方法调用中...

    struts2 ognl用法项目

    在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...

    struts用法总结

    以下是对Struts用法的详细总结: 1. **STRUTS 编码步骤**: - 创建项目的目录结构:通常包括SOURCE、JSP、WEB-INF、classes和lib目录。 - SOURCE下存放未编译的Java源代码。 - JSP目录下存放用户交互界面的JSP...

    Struts基本用法

    Struts入门必备

    struts form 表单 用法

    下面将详细介绍Struts Form表单的用法及其与HTML `&lt;form&gt;`标签的混合使用。 **1. 创建Struts Form Bean** 首先,我们需要创建一个JavaBean类,这个类通常称为Form Bean,它将代表表单中的数据模型。例如,我们可以...

    struts中dispatchAction用法

    DispatchAction是Struts提供的一个可扩展的Action类,它允许开发者将一个单一的Action类拆分成多个子方法,每个子方法处理特定的业务逻辑,从而提高了代码的组织性和可维护性。 DispatchAction的工作原理是通过...

    Struts基本用法之验证

    Struts基本用法之验证

    Struts基本用法之类型转换

    Struts基本用法之类型转换介绍

    struts1和struts2的区别

    - **Struts1**: Struts1中的Action通常需要实现`execute`方法,并且依赖于Servlet API。为了测试Action的行为,通常需要使用StrutsTestCase等工具提供的模拟环境。 - **Struts2**: Struts2支持更加灵活的单元测试...

    Struts2拦截器及其用法详细说明

    这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP(面向切面编程)思想的组件,它可以理解为在Action调用前后插入的逻辑处理。在...

    00000033_bean-struts的用法.rar

    本资料"00000033_bean-struts的用法.rar"主要探讨了Bean-Struts框架的基本概念、核心组件以及具体的应用方法。 Bean-Struts框架是Apache Struts的扩展,它强调了业务逻辑层与视图层之间的数据交换,通过JavaBeans...

    Struts2动态方法调用

    例如,我们可以使用jQuery的`$.ajax`或`$.post`方法,配合Struts2的ActionContext,将请求参数传递给服务器。在服务器端,Struts2会解析这些参数,根据配置找到对应的方法进行执行。这种方式使得前端和后端的交互...

    struts2标签使用例子

    在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。

    struts1.0和struts2

    此外,Struts2的ActionSupport基类提供了对常用接口的实现,使得Action对象的创建更加灵活,不再局限于Action接口,任何具有execute方法的POJO对象都可以作为Struts2的Action对象。 线程模型方面,Struts1采用单例...

    Struts2框架及注释和用法

    下面我们将深入探讨Struts2的关键概念、注释以及使用方法。 **1. Struts2架构** Struts2的核心是Action类,它是处理用户请求的入口点。每个Action对应一个业务逻辑,当用户发起请求时,Struts2会根据配置文件(如...

    使用Struts 2框架开发租房网站

    在开发租房网站的过程中,学生将学习如何创建Action类、配置struts.xml、设计数据库模型、编写DAO和Service层代码、实现页面交互以及使用Struts 2提供的各种功能来优化用户体验。这将帮助他们掌握Web应用开发的基本...

    Struts 2的用法

    2. **指定方法名调用**:如果需要调用特定方法,可以在`struts.xml`中配置,并在JSP中使用`action`标签的`method`属性指定。 3. **重复Action配置**:对于同一个Action类的不同方法,需要在`struts.xml`中配置多个`...

    struts2.0整合Struts 1

    书中通过实例演示了如何将Struts 1应用迁移到Struts 2,使开发者能够理解两者的差异和集成方法。 Struts 2的关键特性包括: 1. **Action类与Result**:Struts 2中的Action类替代了Struts 1的Form Bean,负责处理...

Global site tag (gtag.js) - Google Analytics