`
aiou
  • 浏览: 192222 次
  • 性别: 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
分享到:
评论

相关推荐

    hibernate+spring+struts2

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

    Struts2\constant应用

    该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。 struts.dispatcher.parametersWorkaround 对于某些Java EE服务器,不支持HttpServlet...

    struts2讲义_吴峻申

    9.2.2 Struts2Action范围属性文件国际化应用 187 9.2.3 Struts2临时范围属性文件国际化应用 188 9.3 用户主动选择国际化应用介绍 191 第10章 Struts2页面布局实现 194 10.1 sitemesh基本使用方法 194 10.2 sitemesh...

    Struts2属性文件详解

    该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开. struts.diSPAtcher.parametersWorkaround 对于某些Java EE服务器,不支持HttpServlet Request...

    Struts2 in action中文版

    第11章 理解国际化 240 11.1 Struts 2框架和Java i18n 241 11.1.1 使用ResourceBundle和Locale取得本地化文本 241 11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts ...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    运用struts1.2+hibernate+spring 框架完整购物商城项目(内含sql文件)

    一个J2EE购物网站的实现 运用struts1.2+hibernate+spring 框架,数据库连接池,...Struts 应用国际化,Struts 标签库与Tiles框架, JSTL标签库,Spring IOC。 采用优化性能技术,采用oscache缓存,freemarker静态页面生成

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...

    Java Web程序设计教程

    6.3.3应用struts2输入校验框架 128 6.3.4自定义校验器 130 6.4国际化 131 6.4.1国际化实现原理 131 6.4.2准备国际化资源文件 131 6.4.3调用国际化资源文件 134 6.5上传和下载 135 6.5.1文件上传的实现原理 ...

    达内java培训目录

    Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...

    FreeMarker模板引擎-其他

    5、智能的国际化和本地化 字符集智能化(内部使用UNICODE) 数字格式本地化敏感 日期和时间格式本地化敏感 非US字符集可以用作标识(如变量名) 多种不同语言的相同模板 6、强大的XML处理能力 &lt;#recurse&gt; 和&...

    购物管理系统

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

    基于java的企业级应用开发:Spirng MVC入门.ppt

    支持国际化。可以根据用户区域显示多国语言。 Spring MVC具有以下特点: 支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。 使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。 在Eclipse中...

    ssh整合项目

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

    SSH绿色健康购物网.rar

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

    SSH绿色健康购物网

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

    最新最全的spring开发包

    包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、 XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。 (13) spring-mock.jar  这个jar文件...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、 XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。 (13) spring-mock.jar  这个jar文件包含...

Global site tag (gtag.js) - Google Analytics