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

Freemarker+Struts2 国际化应用

    博客分类:
  • java
阅读更多
Struts2使用FreeMarker作为其默认的模板技术,因此Struts2对FreeMarker的支持非常良好。因此,为了Struts2应用中使用FreeMarker模板技术,只需要在struts.xml文件中进行简单配置即可。

由于FreeMarker自供的FTL指令的能力非常有限,让我们编写一些相对复杂的界面里有点力不从心。不过不用担心,Struts2已经为我们提供了额外的标签库的支持。



1.要在FreeMarker模板使用标签库,只要四步,如下:

(1)解压struts2-core-X.X.X.jar文件,把在META-INF文件夹下面的struts-tags.tld文件复制到WEB-INF文件夹下。



(2)在web.xml文件中启动JSPSupportServlet.代码如下:

<servlet>

  <!-- define a JspSupportServlet Object -->

  <servlet-name>JspSupportServlet</servlet-name>

  <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>

  <!-- setting JspSupportServlet auto start -->

  <load-on-startup>1</load-on-startup>

</servlet>



(3)在FreeMarker模板中使用assign指令导入标签库。代码如下

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] /> 注:这里我把struts-tags.tld放在WEB-INF下面



(4)现在我们可以在FreeMarker模板中使用标签了,示例代码如下:

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />

<@s.form action="login">

<@s.textfield name="username" label="username"/>

<@s.submit value="login" />

</@s.form >



2.登录示例:

(1)在WEB-INF文件夹下面建立一个名为ftl的文件夹,其实就是FreeMarker容器,我们把所有的ftl文件都放在里面。

现在我们先在下面建立三个名字分别为login.ftl,welcome.ftl,showinfo.ftl的文件。

login.ftl代码如下

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />

<html>……

<body>

please input username and password login<br>

<@s.form action="Login.action">

<@s.textfield name="username" label="username"/>

<@s.password name="password" label="password" />

<@s.submit value="submit" />

</@s.form >

</body>

</html>



welcome.ftl代码如下:

<html>…WelCome,${username},you logined!<br>

<a href="ShowInfo.action">Show Information</a>…</html>



showinfo.ftl



(2)从上面的ftl中我们可以看出,我们必须建立两个Action。

我是在com.test.action包下建立Action的。

LoginAction.java    ShowInfo.java



(3)剩下的就是配置文件啦,也就是struts.xml

代码片段如下:

<!-- 因为浏览者无法直接访问WEB-INF/ftl路径下的资源,所以我们在struts.xml文件中配置下面片段代码。  也就是配置了一个能匹配所有请求的Action,该Action被映射到一个动态Result.   -->

  <action name="*">

   <result type="freemarker">/WEB-INF/ftl/{1}.ftl</result>

  </action>



  <!-- define a LoginAction -->

  <action name="Login" class="com.test.action.LoginAction">

   <result name="error" type="freemarker">/WEB-INF/ftl/error.ftl</result>

   <result name="success" type="freemarker">/WEB-INF/ftl/welcome.ftl</result>

  </action>

  <action name="ShowInfo" class="com.test.action.ShowInfo">

   <result name="login" type="freemarker">/WEB-INF/ftl/login.ftl</result>

   <result name="success" type="freemarker">/WEB-INF/ftl/showinfo.ftl</result>

  </action>



以上内容转自:FreeMarker作为Struts2的视图



3、国际化

       类似JSP+Struts2的国际化,可参考:Struts2的国际化

(1)准备资源属性文件

baseName_language_country.properties
baseName_language.properties
baseName.properties



(2)Struts2加载全局资源文件

加载全局资源文件的方式是通过配置常量来实现的。(struts.custom.i18n.resources)

       具体配置:在struts.properties配置文件中增加以下信息

       struts.custom.i18n.resources= baseName(文件名,不含后缀)



(3)访问国际化资源
ftl页面输出:

A:不带占位符的信息加载

login.title=welcome into page

<@s.text name="login.title"/> 用name属性来加载资源文件的key值。

或<@s.property value="%{getText('login.title')}"/>



B:带占位符的信息加载

login.title=welcome {0} into {1} page

<@s.text name="login.title">

       <@s.param>hello</@s.param>

       <@s.param>index</@s.param>

</@s.text>或

<@s.property value="%{getText('login.title',{'hello','index'})}"/>



C:在表单标签中加载信息

login.name=login name

<@s.textfield label="%{getText('login.name')}" name="name"/>

<@s.textfield label="%{getText('login.title',{'hello','index'})}" name="name2"/>

如果占位符对应的参数来自Action,那么可以直接在action中调用国际化返回一个参数变量即可。

<@s.textfield label="%{tab1}" name="address3"/>或

<@s.textfield label="${tab1}" name="address5"/>均可正常显示。



Action中访问:

在Action类中获取带占位符的国际化信息,可以使用getText(String key, String[] args)或getText(String aTextName, List args)方法。

login.title=welcome into page

       String[] mess= new String[]{"数组占位值1","数组占位值2"};

System.out.println(getText("login.title",mess));

String mes1= "单一占位值1";String tab2= "单一占位值2";

System.out.println(getText("login.title",new String[]{mes1,mes2}));



以上显示均通过测试。

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://aumy2008.blogbus.com/logs/42433426.html
分享到:
评论

相关推荐

    freemarker+struts2+在eclipse中创建maven项目

    Struts2是一个基于Model-View-Controller(MVC)设计模式的Java Web框架,它简化了Web应用开发,提供了强大的动作和结果处理、拦截器、国际化等功能。在Eclipse中,你可以通过Maven仓库下载Struts2的相关依赖,然后...

    struts2+freemarker 国际化

    在Struts2和Freemarker中实现国际化,可以让应用的用户界面适应全球范围内的用户。 首先,我们需要理解Struts2的国际化流程。Struts2提供了一种机制,通过资源属性文件(通常是.properties格式)来管理不同语言的...

    hibernate+spring+struts2

    (3)Struts 应用国际化,Struts 标签库与Tiles框架, JSTL标签库,Spring IOC; (4)采用优化性能技术,采用oscache缓存,freemarker静态页面生成; (5)功能比较多但操作简单的后台管理;(后台管理附图片)

    Struts2+freemarker+flash 采集摄像头头像

    Struts2提供了丰富的拦截器、结果类型和插件,使得开发者可以轻松地处理表单提交、验证、国际化等问题。在这个项目中,Struts2可能是用来接收用户通过Flash上传的摄像头头像数据,并将其保存到服务器。 接着,...

    freemarker与struts2详细配置

    - **国际化**:使用FreeMarker的`&lt;#i18n&gt;`指令来实现国际化。 - **标签库**:结合Struts2的标签库,如`s:form`、`s:textfield`等,使模板更加简洁。 - **模板继承**:通过`&lt;#include&gt;`或`&lt;@import&gt;`指令,实现模板的...

    struts2+freemarker

    7. **国际化与本地化**:Struts2和Freemarker都支持多语言环境,可以通过资源文件实现不同地区的文字显示。 在实际开发中,"freemarker2"这个文件可能是Freemarker的一个示例模板或者配置文件,它可能包含了如何...

    Hibernate+Struts2在线投票系统

    同时,系统还可能包含了异常处理、国际化支持、AJAX异步更新等高级特性,以提升用户体验。 在文件列表"MyVote"中,我们可以推测这包含了整个项目的源代码结构。其中,可能包括了Action类(Struts2的核心组件,处理...

    Struts2整合Freemarker生成静态页面

    7. **国际化与本地化**:Struts2支持Freemarker的国际化功能,可以创建资源文件(如`message.properties`),并使用`&lt;@s.i18n...&gt;`标签来输出本地化信息。 8. **静态页面生成**:整合Struts2和Freemarker的一个常见...

    Struts2-API+Struts2中文帮助文档

    如何定义一个自定义的结果类型,以及如何利用Struts2的国际化功能提供多语言支持。此外,文档可能还会涵盖Struts2与其他技术的整合,如Spring框架的集成,以及数据库操作的示例。 在实际开发中,Struts2允许灵活的...

    JavaScript+php5+struts2帮助文档

    学习Struts2,你需要了解Action、配置文件(struts.xml)、拦截器链、结果类型(例如JSP、FreeMarker或Velocity模板)、国际化和验证机制。同时,Struts2与其他框架(如Hibernate进行ORM、Spring进行依赖注入)的...

    java+struts2+tomcat 员工管理系统

    - **国际化(Internationalization, i18n)**:系统可能支持多语言,因此需要使用资源文件进行国际化处理。 - **权限控制(Access Control)**:系统可能有不同级别的用户,需要进行角色和权限管理,可以使用Spring ...

    struts2和freemarker整合

    Struts2和FreeMarker是两种在Java Web开发中广泛应用的技术。Struts2是一个基于MVC(Model-View-Controller)架构模式的开源框架,用于构建动态、数据驱动的Web应用程序,而FreeMarker则是一个模板引擎,它允许...

    j2ee项目练习 jdbc+struts

    7. 错误和异常处理,以及国际化支持。 通过这个项目,你将深入理解J2EE应用程序的开发流程,提升Java Web开发技能,同时也能巩固数据库管理和MVC架构的理解。在实际练习过程中,可能会遇到的问题包括但不限于数据库...

    Struts2 与Freemarker 的配置方法

    此外,还可以使用Struts2的国际化和主题特性来实现多语言和不同样式表的支持。 总结来说,Struts2与Freemarker的配置主要是围绕工程的环境搭建、Struts2的web.xml配置、struts.xml配置以及Freemarker模板的编写展开...

    Spring+proxool+hibernate+struts2+aop_Jar包

    此外,Struts2还提供了强大的数据验证和国际化等功能。 5. **SSH2整合**:SSH2是Spring、Struts2和Hibernate的简称,代表了Java Web开发的一种流行组合。整合这三者可以实现模型-视图-控制器、持久层管理和业务逻辑...

    struts2学习利器(api+深入浅出struts2+struts2权威指南)高清版

    权威指南通常会提供更深入的分析和实践指导,涵盖了Struts2的最新特性,如Struts2与Spring集成、国际化、异常处理、AJAX支持等。这本书可能还会讨论最佳实践,如何优化性能,以及如何调试和解决Struts2应用中的问题...

    struts2-freemarker

    3. **国际化与本地化**:Struts2支持国际化,可以在模板中使用`#messages`指令显示不同语言的消息。 4. **模板继承与宏**:FreeMarker支持模板继承,子模板可以继承父模板的部分内容,提高代码复用。宏可以封装常用...

    struts2框架国际化

    国际化(i18n)是Struts2的一个重要特性,使得应用能够支持多种语言环境,以满足全球用户的语言需求。以下是对Struts2框架国际化实现的详细讲解。 1. **国际化的基本概念** 国际化(Internationalization,简称i18...

    spring+hibernate+struts2使用笔记

    - **国际化支持**:内置对国际化和本地化的支持,方便实现多语言应用。 - **强大的表单处理能力**:提供自动的数据绑定和验证功能,简化了前端表单处理的工作量。 ### 二、MVC设计模式详解 #### 1. MVC的概念 MVC...

Global site tag (gtag.js) - Google Analytics