今日有了国际化的需求,以前处理国际化时,对于javascript资源中的国际化问题,一直是个头疼的问题,我们一起来探讨一下,如何使用freemarker实现js文件的国际化。
实现原理:
- 我们将JS文件做为模板,通过freemarker对其进行格式化。
- 扩展freemarker指令,定义资源指令。
- 前台JSP的tag库。
准备工作:
- 定义我们自己的jsp标签 : <p:script src=”test.js”/>,标签内容: 指定js文件路径,标签内部从request中取locale信息,通过freemarker取到test.js这一模板(我将我的js文件都放到了/scripts目录下),将locale信息作为变量放到模板中,进行格式化。然后写到应用某一目录中,最终我们的<p:script src=”test.js”/>标签,输出内容为:<script type=”text/javascript” src=”/scripts_bin/zh/test.js”>,p:script先通过当前locale和src属性,判断是否格式化之后的js文件存在,例如/scripts_bin/zh/test.js文件不存在,则调用模板输出,存在的话,直接返回URL,
- 问题:开发过程中的问题,上面的描述,貌似我们的JS每次都被格式化,然后存储到另一个目录中,而且下次就不会对那么目录进行重新,当然我们可以通过配置解决此问题,我给系统加入了resource.cache_script配置,如果设为false,则每次都会进行重写。
方案总结: 首先我们将JS文件视为模板,然后封装我们自己的指令,对JS中的表达式进行替换,存放到应用的某一目录下,通过JSP标签,输出不同语言目录下的JS文件。
详细:http://www.codeloger.com/?p=549
分享到:
相关推荐
在实际开发中,自定义标签可以实现许多高级功能,如数据库查询、缓存管理、国际化处理等。例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容...
Struts2 和 Freemarker 是两个在Java Web开发中广泛使用的框架和模板引擎,它们结合使用可以构建出高效、可维护的MVC应用。Struts2 是一个基于MVC设计模式的开源框架,它继承了经典的Struts1框架,并在很多方面进行...
例如,在HTML中使用#作为前缀的标签,会将其识别为FreeMarker指令而非HTML标签。 #### 三、FTL标签详解 FreeMarker使用FTL标签来定义其专有的语法结构,这有助于区分模板中的逻辑控制部分与普通的HTML标记。具体来...
这些表达式可以在插值中使用,也可以作为指令参数的一部分。 - 示例:`${user.name}<#else>Guest</#if>` 在这个例子中,`?`后跟的表达式用于检查变量是否存在且不为空,如果是,则输出用户的名称;否则输出...
1. **Freemarker模板语言**:Freemarker模板由HTML或其他格式的文本组成,并嵌入了Freemarker指令和表达式。例如,`<#if>`用于条件判断,`${}`用于输出变量的值。 2. **配置Freemarker**:在Struts应用中,需要在`...
### FreeMarker语法知识详解 #### 一、FreeMarker概述 FreeMarker是一种强大的模板引擎,用于生成文本输出。...FreeMarker提供了丰富的内置函数和支持多种运算符的表达式语言,使得在模板中处理数据变得非常方便。
FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, - , * , / , % 看如下的代码: ${ x * x - 100 } ${ x /2 } ${ 12 } 输出结果是: -75 2.5 2 在表达式中使用算术运算符时要注意以下...
- **4.6 在Servlet中使用FreeMarker**:指导如何在Servlet环境中集成FreeMarker。 - **4.7 为FreeMarker配置安全策略**:讲解了如何确保FreeMarker的安全性。 - **4.8 遗留的XML包装实现**:介绍了一些遗留的XML包装...
- **模板(Template)**:Freemarker模板是包含静态文本和变量的文件,变量在运行时被替换为实际值。 - **数据模型(Data Model)**:这是Freemarker解析模板时所使用的数据源,通常由Java对象构成。 - **模板...
此外,提供的其他文档如"js面向对象.pdf"、"Javascript基础教程(文字版_代码可复制).pdf"、"jQuery1.7.1_API中文手册.pdf",虽然不是直接关于Freemarker的,但它们都是前端开发的重要资源。JavaScript作为前端的主要...
可以在一个表达式中连续使用多个`?`操作符,例如`user.address.street?default('N/A')?html`,这首先检查`street`是否存在,如果不存在则使用默认值`'N/A'`,然后对结果进行HTML转义,防止XSS攻击。 5. **自定义...
在JSP中,JavaScript可以嵌入到HTML或者单独的.js文件中,通过JSP的内置对象如`<script>`标签引入。JSP还可以通过`<%= %>`、`<%-- --%>`和`! %> `等语法结构将Java代码与HTML混合,实现服务器端的逻辑处理。 在网页...
在Spring Boot应用中,JavaScript文件通常存储在`static/js`目录下。同样,Spring Boot会自动处理对这些文件的请求。 4. **Plugins(插件)** - 插件通常指的是增强页面功能的第三方JavaScript库或CSS框架。例如,...
3. **国际化(i18n)支持**:Thymeleaf可以轻松处理多语言内容,通过属性文件和模板中的指令,可以方便地实现页面内容的国际化。 4. **条件和循环逻辑**:Thymeleaf提供了一系列的条件表达式和循环结构,如`th:if`...
通过深入研究这些"JSP宝典源代码文件",你可以了解到实际项目中的JSP应用方式,理解如何组织和管理代码,以及如何与其他组件(如JavaBean、数据库、框架)协同工作。这将对提升你的JSP开发技能大有裨益。在实践中,...