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 允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂...
Struts基本用法之国际化
在Struts2中,动态方法调用(Dynamic Method Invocation,DMI)是一种特性,允许我们通过URL直接调用Action类的方法,而无需在配置文件中显式指定。这在某些情况下提供了更大的灵活性。 在Struts2的动态方法调用中...
在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...
以下是对Struts用法的详细总结: 1. **STRUTS 编码步骤**: - 创建项目的目录结构:通常包括SOURCE、JSP、WEB-INF、classes和lib目录。 - SOURCE下存放未编译的Java源代码。 - JSP目录下存放用户交互界面的JSP...
Struts入门必备
下面将详细介绍Struts Form表单的用法及其与HTML `<form>`标签的混合使用。 **1. 创建Struts Form Bean** 首先,我们需要创建一个JavaBean类,这个类通常称为Form Bean,它将代表表单中的数据模型。例如,我们可以...
DispatchAction是Struts提供的一个可扩展的Action类,它允许开发者将一个单一的Action类拆分成多个子方法,每个子方法处理特定的业务逻辑,从而提高了代码的组织性和可维护性。 DispatchAction的工作原理是通过...
Struts基本用法之验证
Struts基本用法之类型转换介绍
- **Struts1**: Struts1中的Action通常需要实现`execute`方法,并且依赖于Servlet API。为了测试Action的行为,通常需要使用StrutsTestCase等工具提供的模拟环境。 - **Struts2**: Struts2支持更加灵活的单元测试...
这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP(面向切面编程)思想的组件,它可以理解为在Action调用前后插入的逻辑处理。在...
本资料"00000033_bean-struts的用法.rar"主要探讨了Bean-Struts框架的基本概念、核心组件以及具体的应用方法。 Bean-Struts框架是Apache Struts的扩展,它强调了业务逻辑层与视图层之间的数据交换,通过JavaBeans...
例如,我们可以使用jQuery的`$.ajax`或`$.post`方法,配合Struts2的ActionContext,将请求参数传递给服务器。在服务器端,Struts2会解析这些参数,根据配置找到对应的方法进行执行。这种方式使得前端和后端的交互...
在压缩包中的"example"文件可能包含了一个或多个使用Struts2标签的实际示例,可以参考这些示例来理解和学习Struts2标签的用法。通过实践,你会更好地掌握这些标签的功能和用法,从而在开发过程中更加得心应手。
此外,Struts2的ActionSupport基类提供了对常用接口的实现,使得Action对象的创建更加灵活,不再局限于Action接口,任何具有execute方法的POJO对象都可以作为Struts2的Action对象。 线程模型方面,Struts1采用单例...
下面我们将深入探讨Struts2的关键概念、注释以及使用方法。 **1. Struts2架构** Struts2的核心是Action类,它是处理用户请求的入口点。每个Action对应一个业务逻辑,当用户发起请求时,Struts2会根据配置文件(如...
在开发租房网站的过程中,学生将学习如何创建Action类、配置struts.xml、设计数据库模型、编写DAO和Service层代码、实现页面交互以及使用Struts 2提供的各种功能来优化用户体验。这将帮助他们掌握Web应用开发的基本...
2. **指定方法名调用**:如果需要调用特定方法,可以在`struts.xml`中配置,并在JSP中使用`action`标签的`method`属性指定。 3. **重复Action配置**:对于同一个Action类的不同方法,需要在`struts.xml`中配置多个`...
书中通过实例演示了如何将Struts 1应用迁移到Struts 2,使开发者能够理解两者的差异和集成方法。 Struts 2的关键特性包括: 1. **Action类与Result**:Struts 2中的Action类替代了Struts 1的Form Bean,负责处理...