除经特别注明外,本站文章版权归JScud Develop团队或其原作者所有.
转载请注明作者和来源. scud(飞云小侠) 欢迎访问 JScud Develop
这个特性应该说这是一个副产品.是我最近突然想到这个想法,然后试用webwork 2.2,发现可以做到,而webwork 2.1.7是做不到的.
名词定义:
简单页面:不通过action访问,直接访问文件的url.例如直接访问的jsp,或者直接访问的ftl.
需求想法:
在一个网站中,有很多页面,其中很多页面仅仅是简单的页面,没有程序处理等.不过为了国际化,这些页面就需要进行i18n的工作.
1.按照正常的想法,应该是每个页面都要写一个action,然后结果定义为这个页面,通过访问action来对页面进行国际化.或者是写一个action,根据参数的不同,转向目标页面.
或者要定义很多action或者很多参数 或者用一个程序带不同的参数来访问. 总之是麻烦,不直观.
2.实现自己的一个tag来装载国际化信息.这样很简单.不过只能用在jsp里. 如果想使用freemarker的话,通过一些简单处理,也可以使用这个功能.
这个思路很简单,可以不依赖任何其他组件.
3.WebWork 2.1.7
如果是在Jsp中,可以通过
<ww:i18n name="message"> <ww:text name="name"/> </ww:i18n>
|
来实现简单页面的国际化. 无法在freemarker的简单页面中直接使用. (可以在action的结果页面中使用)
4.WebWork 2.2 Beta (在最后发布的版本中,可能会有变化!!!)
在简单页面Jsp中,可以直接使用ww:text,例如
(注意:在webwork.properties中需要包含资源文件 webwork.custom.i18n.resources=message ,如果有多个,就用逗号分割)
在FreeMarker的简单文件中,也可以直接使用ww:text.
当前是在web.xml里面配置了FreeMarker的处理引擎.如:
<servlet> <servlet-name>freemarker</servlet-name> <servlet-class>com.opensymphony.webwork.views. freemarker.FreemarkerServlet</servlet-class> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping> |
警告:如果你不使用FreeMarker的简单页面,不需要配置这个Servlet,即使使用freemarker的ftl页面来做action的结果页面,也不需要配置这个Servlet,使用webwork的freemarker结果即可,具体请浏览webwork的Result Type的文档.