热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Tapestry之国际化的实现TWO

前面按照别人的想法做了一个,这次按照自己的想法自己做了一个。tml如下

前面按照别人的想法做了一个,这次按照自己的想法自己做了一个。

tml如下

<t:form t:id&#61;"locale"><t:loop source&#61;"LocalesSource" value&#61;"selectedLocale" formState&#61;"ITERATION"><t:test server&#61;"currentLocale" client&#61;"${selectedLocale.locale.language}"><img src&#61;"${selectedLocale.asset}" class&#61;"currentFlag" /><p:else><a t:type&#61;"actionLink" t:id&#61;"changeLocale" context&#61;"${selectedLocale.locale.language}" href&#61;"#"><img src&#61;"${selectedLocale.asset}" class&#61;"notCurrentFlag" />a>p:else>t:test>t:loop><div class&#61;"message">${message:greeting_message}div>t:form>

java如下&#xff1a;

public class LocaleSwitcher2
{&#64;Inject&#64;Property&#64;Symbol(SymbolConstants.SUPPORTED_LOCALES)
private String locales;&#64;Injectprivate PersistentLocale persistentLocale;&#64;Propertyprivate LocaleBean selectedLocale;&#64;Inject&#64;Path("context:images/country_zh.png")private Asset assetZh;&#64;Inject&#64;Path("context:images/country_it.png")private Asset assetIt;&#64;Inject&#64;Path("context:images/country_ja.png")private Asset assetJa;&#64;Inject&#64;Path("context:images/country_en.png")private Asset assetEn;public List getLocalesSource(){String[] countrys &#61; locales.split(",");List localeList &#61; new ArrayList();for (String country : countrys) {LocaleBean addBean &#61; new LocaleBean();addBean.setLocale(new Locale(country));if (country.equalsIgnoreCase("en")) {addBean.setAsset(assetEn);} else if (country.equalsIgnoreCase("ja")) {addBean.setAsset(assetJa);} else if (country.equalsIgnoreCase("zh")) {addBean.setAsset(assetZh);} else if (country.equalsIgnoreCase("it")) {addBean.setAsset(assetIt);} else {addBean.setAsset(assetEn);}localeList.add(addBean);}return localeList;}public ValueEncoder getLocaleEncoder(){return new ValueEncoder() {public String toClient(Locale locale){return locale.getLanguage();}public Locale toValue(String language){return new Locale(language);}};}void onActionFromChangeLocale(String language){persistentLocale.set(new Locale(language));}public String getCurrentLocale(){return persistentLocale.get().getLanguage();}}

public class LocaleBean
{
private Locale locale;private Asset asset;public Locale getLocale(){return locale;}public void setLocale(Locale locale){this.locale &#61; locale;}public Asset getAsset(){return asset;}public void setAsset(Asset asset){this.asset &#61; asset;}}

public class Test extends AbstractConditional
{&#64;Parameter(required
&#61; true)private String client;&#64;Parameter(required &#61; true)private String server;&#64;Parameterprivate boolean negate;&#64;Overrideprotected boolean test(){return client.equalsIgnoreCase(server);}}

效果图&#xff1a;

转:https://www.cnblogs.com/voctrals/archive/2013/04/02/2995531.html



推荐阅读
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • 本文介绍了一个SQL Server自定义函数,用于从字符串中提取仅包含数字和小数点的子串。该函数通过循环删除非数字字符来实现,并附带创建测试表、存储过程以演示其应用。 ... [详细]
  • ZooKeeper集群脑裂问题及其解决方案
    本文深入探讨了ZooKeeper集群中可能出现的脑裂问题,分析其成因,并提供了多种有效的解决方案,确保集群在高可用性环境下的稳定运行。 ... [详细]
author-avatar
461067805QQ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有