当前位置: 首页 > news >正文

extremecomponents使用struts2国际化信息的方法

有两种方法来实现该功能:间接法、直接法
第一种:间接法,使用el表达式与struts2的tag来写,这种方法比较繁琐,比如:
<s:set name="username" value="getText('user.username')" scope="page" />
<ec:table items="users" var="user" tableId="user" form="userForm"
view="multiCompact"
action="${ctx}/system/listUser.action" locale="${i18n_locale}">
<ec:row>
<ec:column property="username" title="${username}" />
</ec:row>
</ec:table>

第二种:直接法,该方法是利用ec提供的扩展点来实现,这主要得益于ec的良好设计,该方法有两个步骤:
1.定义个实现org.extremecomponents.table.core.Messages结构的类

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import javax.servlet.jsp.PageContext;

import org.apache.struts2.views.jsp.TagUtils;
import org.extremecomponents.table.context.Context;
import org.extremecomponents.table.core.Messages;
import org.extremecomponents.table.resource.TableResourceBundle;

import com.opensymphony.xwork2.TextProvider;
import com.opensymphony.xwork2.util.ValueStack;

public class MessagesStruts2Adapter implements Messages ... {

privateTextProvidertextProvider=null;

privateMessagesdefaultMessages;

publicMessagesStruts2Adapter()...{
super();
this.defaultMessages=newTableResourceBundle();
}


publicvoidinit(Contextcontext,Localelocale)...{
//先读取extremecomponents自带的国际化文件
this.defaultMessages.init(context,locale);

if(context.getContextObject()instanceofPageContext)...{
PageContextpageContext
=(PageContext)context.getContextObject();
ValueStackstack
=TagUtils.getStack(pageContext);
for(Objecto:stack.getRoot())...{
if(oinstanceofTextProvider)...{
this.textProvider=(TextProvider)o;
break;
}

}

}

}


publicStringgetMessage(Stringcode)...{
returngetMessage(code,null);
}


publicStringgetMessage(Stringcode,Object[]args)...{
//优先查找struts2的配置文件,然后再查找ec自带的配置文件
List<Object>theArgs=null;
if(args!=null)...{
theArgs
=newArrayList<Object>();
for(Objectarg:args)...{
theArgs.add(arg);
}

}


Stringmessage
=null;
if(this.textProvider!=null)...{
message
=this.textProvider.getText(code,null,theArgs);
}

if(message==null)...{
message
=defaultMessages.getMessage(code,args);
}


returnmessage;
}

}

2.在extremecomponents的配置文件中配置该实现类

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何快速找到package里的main_餐饮加盟行业如何快速找到精准客户?
  • 数据库事务性操作
  • python random库全部_python常用库之random
  • 查询中使用CASE结构
  • python制作网页服务器_基于python实现简单网页服务器代码实例
  • 转账事务
  • python 输入函数_Python交互环境下打印和输入函数的实例内容
  • Windows Embedded CE 6.0开发初体验(五)构建CE平台
  • python列表添加元素的三种方法定义集合数据对象_python 学习第三天 可迭代对象(列表,字典,元组和集合)...
  • 实现局域网内批量更新 WSUS架设全攻略
  • sqlalchemy in查询优化_SQLAlchemy(2)
  • 杀毒软件被“杀” 连声“救命”都没喊
  • python圆柱体积代码_Java圆柱体表面积和体积计算代码实例
  • 如何去掉Windows资源管理器和IE地址栏的自动补全功能
  • jquery validate表单校验_SpringValid优雅校验入参
  • [NodeJS] 关于Buffer
  • Android 控件背景颜色处理
  • CentOS6 编译安装 redis-3.2.3
  • Git初体验
  • java8 Stream Pipelines 浅析
  • jQuery(一)
  • Linux gpio口使用方法
  • Terraform入门 - 1. 安装Terraform
  • 汉诺塔算法
  • 基于游标的分页接口实现
  • 聚类分析——Kmeans
  • 两列自适应布局方案整理
  • 中文输入法与React文本输入框的问题与解决方案
  • python最赚钱的4个方向,你最心动的是哪个?
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​Java基础复习笔记 第16章:网络编程
  • ​Linux·i2c驱动架构​
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $.ajax,axios,fetch三种ajax请求的区别
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)(1.11) SiK Radio v2(一)
  • (152)时序收敛--->(02)时序收敛二
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (Python) SOAP Web Service (HTTP POST)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (七)Flink Watermark
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (五)关系数据库标准语言SQL
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (转)jdk与jre的区别