`
Folyred
  • 浏览: 58161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

通过freemarker指令,实现js文件的国际化,可在js中写表达式

阅读更多

今日有了国际化的需求,以前处理国际化时,对于javascript资源中的国际化问题,一直是个头疼的问题,我们一起来探讨一下,如何使用freemarker实现js文件的国际化。
实现原理:
  1. 我们将JS文件做为模板,通过freemarker对其进行格式化。
  2. 扩展freemarker指令,定义资源指令。
  3. 前台JSP的tag库。
准备工作:
  1. 定义我们自己的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,
  2. 问题:开发过程中的问题,上面的描述,貌似我们的JS每次都被格式化,然后存储到另一个目录中,而且下次就不会对那么目录进行重新,当然我们可以通过配置解决此问题,我给系统加入了resource.cache_script配置,如果设为false,则每次都会进行重写。

方案总结: 首先我们将JS文件视为模板,然后封装我们自己的指令,对JS中的表达式进行替换,存放到应用的某一目录下,通过JSP标签,输出不同语言目录下的JS文件。

详细:http://www.codeloger.com/?p=549

分享到:
评论

相关推荐

    freemarker 自定义freeMarker标签

    在实际开发中,自定义标签可以实现许多高级功能,如数据库查询、缓存管理、国际化处理等。例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容...

    struts2 freemarker

    Struts2 和 Freemarker 是两个在Java Web开发中广泛使用的框架和模板引擎,它们结合使用可以构建出高效、可维护的MVC应用。Struts2 是一个基于MVC设计模式的开源框架,它继承了经典的Struts1框架,并在很多方面进行...

    FreeMarker模板基本语法

    例如,在HTML中使用#作为前缀的标签,会将其识别为FreeMarker指令而非HTML标签。 #### 三、FTL标签详解 FreeMarker使用FTL标签来定义其专有的语法结构,这有助于区分模板中的逻辑控制部分与普通的HTML标记。具体来...

    Java模板引擎Freemarker教程.docx

    这些表达式可以在插值中使用,也可以作为指令参数的一部分。 - 示例:`${user.name}&lt;#else&gt;Guest&lt;/#if&gt;` 在这个例子中,`?`后跟的表达式用于检查变量是否存在且不为空,如果是,则输出用户的名称;否则输出...

    freemarker --struts中的应用

    1. **Freemarker模板语言**:Freemarker模板由HTML或其他格式的文本组成,并嵌入了Freemarker指令和表达式。例如,`&lt;#if&gt;`用于条件判断,`${}`用于输出变量的值。 2. **配置Freemarker**:在Struts应用中,需要在`...

    FreeMarker语法知识

    ### FreeMarker语法知识详解 #### 一、FreeMarker概述 FreeMarker是一种强大的模板引擎,用于生成文本输出。...FreeMarker提供了丰富的内置函数和支持多种运算符的表达式语言,使得在模板中处理数据变得非常方便。

    freemarker总结

    FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, - , * , / , % 看如下的代码: ${ x * x - 100 } ${ x /2 } ${ 12 } 输出结果是: -75 2.5 2 在表达式中使用算术运算符时要注意以下...

    FreeMarker中文手册

    - **4.6 在Servlet中使用FreeMarker**:指导如何在Servlet环境中集成FreeMarker。 - **4.7 为FreeMarker配置安全策略**:讲解了如何确保FreeMarker的安全性。 - **4.8 遗留的XML包装实现**:介绍了一些遗留的XML包装...

    Freemarker 中文手册

    - **模板(Template)**:Freemarker模板是包含静态文本和变量的文件,变量在运行时被替换为实际值。 - **数据模型(Data Model)**:这是Freemarker解析模板时所使用的数据源,通常由Java对象构成。 - **模板...

    Freemarker简介及标签详解大全

    此外,提供的其他文档如"js面向对象.pdf"、"Javascript基础教程(文字版_代码可复制).pdf"、"jQuery1.7.1_API中文手册.pdf",虽然不是直接关于Freemarker的,但它们都是前端开发的重要资源。JavaScript作为前端的主要...

    freemarker04

    可以在一个表达式中连续使用多个`?`操作符,例如`user.address.street?default('N/A')?html`,这首先检查`street`是否存在,如果不存在则使用默认值`'N/A'`,然后对结果进行HTML转义,防止XSS攻击。 5. **自定义...

    网页常用javascript脚本

    在JSP中,JavaScript可以嵌入到HTML或者单独的.js文件中,通过JSP的内置对象如`&lt;script&gt;`标签引入。JSP还可以通过`&lt;%= %&gt;`、`&lt;%-- --%&gt;`和`! %&gt; `等语法结构将Java代码与HTML混合,实现服务器端的逻辑处理。 在网页...

    Springboot整合mp前端页面资源

    在Spring Boot应用中,JavaScript文件通常存储在`static/js`目录下。同样,Spring Boot会自动处理对这些文件的请求。 4. **Plugins(插件)** - 插件通常指的是增强页面功能的第三方JavaScript库或CSS框架。例如,...

    thymeleaf_3.0.5_中文手册PDF

    3. **国际化(i18n)支持**:Thymeleaf可以轻松处理多语言内容,通过属性文件和模板中的指令,可以方便地实现页面内容的国际化。 4. **条件和循环逻辑**:Thymeleaf提供了一系列的条件表达式和循环结构,如`th:if`...

    JSP宝典源代码文件

    通过深入研究这些"JSP宝典源代码文件",你可以了解到实际项目中的JSP应用方式,理解如何组织和管理代码,以及如何与其他组件(如JavaBean、数据库、框架)协同工作。这将对提升你的JSP开发技能大有裨益。在实践中,...

Global site tag (gtag.js) - Google Analytics