最近 js中需要用国际化的方式,但是在单独的js中使用struts国际化标签有问题,于是找到一种认为还不错的处理方式:就是定义多个国际化js文件。
[color=red]注:
多个js文件中里面只需要定义js中需要的国际化的字符。其余在页面中需要国际化的,还是照样在properties文件中,使用struts2的国际化标签获取就可以[/color]
1.在拦截器里获取当前的语言,并保存至session中,
//语言
String request_locale = request.getParameter("request_locale");
logger.debug("---------request_locale:"+request_locale);
Locale locale = (Locale) request.getSession().getAttribute("i18_local");
if(null !=request_locale)
{
if(request_locale.equalsIgnoreCase("en_US"))
{
locale = Locale.US;
}
else if(request_locale.equalsIgnoreCase("zh_TW"))
{
locale = Locale.TAIWAN;
}
else
{
locale = Locale.CHINA;
}
}
if(locale==null)
{
locale = Locale.CHINA;
}
request.getSession().setAttribute("i18_local", locale.toString());
request.getSession().setAttribute("timeStampForJS", System.currentTimeMillis());
ai.getInvocationContext().setLocale(locale);
2.页面中根据获取当前的语言获取所引用的js文件,防止缓存加上时间戳
<s:if test='#session.i18_local == "en_US"'>
<script src="/lang/lang_en_US.js?<s:property value='#session.timeStampForJS'/>" type="text/javascript"></script>
</s:if>
<s:elseif test='#session.i18_local == "zh_TW"'>
<script src="/lang/lang_zh_TW.js?<s:property value='#session.timeStampForJS'/>" type="text/javascript"></script>
</s:elseif>
<s:else>
<script src="/lang/lang_zh_CN.js?<s:property value='#session.timeStampForJS'/>" type="text/javascript"></script>
</s:else>
3.建立3个国际化的js文件
lang_en_US.js:
var js_edittag = "Edit tag";
lang_zh_CN.js:
var js_edittag = "编辑标签";
lang_zh_TW.js:
var js_edittag = "編輯標籤";
在js中直接使用js_edittag 这个全局变量就可以了。
分享到:
相关推荐
JavaScript(JS)的国际化处理则相对复杂一些,因为JavaScript本身并不支持多语言。一种常见做法是通过后端服务动态加载不同语言的JSON文件,或者在HTML中嵌入多语言数据。例如,我们可以创建两个JSON文件: - `...
总结来说,Struts2的数据验证和国际化功能提高了开发效率,保证了数据的准确性和应用程序的多语言支持。开发者可以通过Action验证或ActionForm验证来处理数据有效性,同时通过资源文件实现内容的国际化。这些特性...
Struts2语言国际化提供了便捷的方式,通过配置拦截器、资源文件、Action以及页面元素,使得Web应用可以支持多种语言。这不仅提升了用户体验,也为全球化部署提供了基础。在实际开发中,根据项目需求,可能还需要考虑...
以下是如何在Struts中实现国际化处理的详细步骤: 1. **创建资源文件**: 国际化的核心在于资源文件,这些文件存储了不同语言环境下的文本消息。在示例中,我们看到了三个文件:`example_en.properties`(英文)、...
常见的拦截器有`params`(处理请求参数)、`validation`(进行表单验证)、`i18n`(国际化处理)等。 4. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(默认,将结果转发到JSP页面)、`...
接下来,我们将深入探讨STRUTS2如何与JavaScript结合实现分页以及国际化。 首先,让我们关注"STRUTS2+JavaScript 的分页"。STRUTS2通过Action类和结果类型来控制页面跳转和数据处理。在分页场景下,Action类通常会...
Struts2提供了丰富的功能,如拦截器、结果类型、国际化支持等,使得开发者能够更高效地处理请求和响应。 在MVC架构中,Model负责业务逻辑,View负责展示,而Controller负责接收用户请求并调用Model进行处理,然后将...
6. **国际化**:Struts2支持多语言环境,通过资源文件实现内容的国际化。 7. **异常处理**:可以自定义全局和Action级别的异常处理器,提供统一的错误页面。 **JavaScript知识点:** 1. **DOM(Document Object ...
Struts2使用ValueStack来存储和传递数据,使得数据可以在Action和JSP之间无缝流动。 四、配置与注解 Struts2支持XML配置和注解配置两种方式。XML配置文件主要用于定义Action、结果类型、拦截器栈等,而注解则可以更...
然而,Struts2 JSON插件还提供了许多高级特性,如自定义JSON序列化策略、处理复杂类型、支持国际化等。在实际开发中,你可以根据项目需求灵活运用这些特性,提高开发效率并优化应用性能。 总的来说,Struts2的JSON...
Struts2提供了丰富的拦截器、插件和模板,使得开发者可以轻松地处理表单提交、验证、国际化等常见任务。 **Ajax技术** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下更新部分网页内容...
此外,Struts2lib.jar可能还包含了一些扩展和插件,比如国际化支持、JSON处理、Ajax集成、上传下载功能等。这些插件增强了Struts2的功能,使其能够适应各种复杂的Web应用场景。例如,`struts2-json-plugin`允许...
- Struts2提供对多语言的支持,通过资源包(Properties文件)实现内容的国际化。 8. **错误与异常处理**: - 使用`<global-exception-mappings>`和`<global-results>`配置全局异常处理策略。 9. **Ajax支持**: ...
8. `struts2-tiles-plugin.jar`:Tiles是用于页面布局的框架,此插件允许Struts2使用Tiles来组织和管理视图。 9. `struts2-plugins/*.jar`:其他各种插件,如上传、邮件发送、国际化等功能的实现。 在下载并解压...
5. **其他可能的目录**:如图片、国际化资源文件等。 **部署步骤**: 1. **环境准备**:确保已安装了Java JDK和Apache Tomcat服务器。Struts2项目需要在Java环境中运行,而Tomcat是常用的Servlet容器。 2. **构建...
7. **国际化支持**:Struts2允许使用资源包(properties文件)为不同语言的用户提供本地化的错误消息。 8. **整合其他验证框架**:除了内置的验证功能,Struts2还可以与Hibernate Validator、JSR 303/JSR 349等Java...
例如,`s:form`标签可以创建表单,自动处理验证和提交,`s:text`用于显示国际化文本。 4. **Struts2标签详细用法**:`s:if`和`s:else`用于条件判断,`s:foreach`处理循环,`s:action`执行Action,`s:include`包含...
6. **国际化与本地化**:为了支持多语言环境,项目可能会使用Struts2的国际化特性,提供不同语言的资源文件,使用户界面可以根据用户的选择显示对应的语言。 7. **AJAX异步请求**:为了提升用户体验,商品查询、...
9. **国际化和本地化**:Struts2支持多语言环境,通过资源配置可以轻松实现界面文本的国际化。 10. **Action上下文(ActionContext)**:存储了当前请求的环境信息,如Session、Request、Response、Parameters等,...