extremecomponents使用struts2国际化信息的方法
2007-12-18 14:00
344 查看
有两种方法来实现该功能:间接法、直接法
第一种:间接法,使用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 ...{
private TextProvider textProvider = null;
private Messages defaultMessages;
public MessagesStruts2Adapter() ...{
super();
this.defaultMessages = new TableResourceBundle();
}
public void init(Context context, Locale locale) ...{
// 先读取extremecomponents自带的国际化文件
this.defaultMessages.init(context, locale);
if (context.getContextObject() instanceof PageContext) ...{
PageContext pageContext = (PageContext) context.getContextObject();
ValueStack stack = TagUtils.getStack(pageContext);
for (Object o : stack.getRoot()) ...{
if (o instanceof TextProvider) ...{
this.textProvider = (TextProvider) o;
break;
}
}
}
}
public String getMessage(String code) ...{
return getMessage(code, null);
}
public String getMessage(String code, Object[] args) ...{
// 优先查找struts2的配置文件,然后再查找ec自带的配置文件
List<Object> theArgs = null;
if (args != null) ...{
theArgs = new ArrayList<Object>();
for (Object arg : args) ...{
theArgs.add(arg);
}
}
String message = null;
if (this.textProvider != null) ...{
message = this.textProvider.getText(code, null, theArgs);
}
if (message == null) ...{
message = defaultMessages.getMessage(code, args);
}
return message;
}
}
2.在extremecomponents的配置文件中配置该实现类
第一种:间接法,使用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 ...{
private TextProvider textProvider = null;
private Messages defaultMessages;
public MessagesStruts2Adapter() ...{
super();
this.defaultMessages = new TableResourceBundle();
}
public void init(Context context, Locale locale) ...{
// 先读取extremecomponents自带的国际化文件
this.defaultMessages.init(context, locale);
if (context.getContextObject() instanceof PageContext) ...{
PageContext pageContext = (PageContext) context.getContextObject();
ValueStack stack = TagUtils.getStack(pageContext);
for (Object o : stack.getRoot()) ...{
if (o instanceof TextProvider) ...{
this.textProvider = (TextProvider) o;
break;
}
}
}
}
public String getMessage(String code) ...{
return getMessage(code, null);
}
public String getMessage(String code, Object[] args) ...{
// 优先查找struts2的配置文件,然后再查找ec自带的配置文件
List<Object> theArgs = null;
if (args != null) ...{
theArgs = new ArrayList<Object>();
for (Object arg : args) ...{
theArgs.add(arg);
}
}
String message = null;
if (this.textProvider != null) ...{
message = this.textProvider.getText(code, null, theArgs);
}
if (message == null) ...{
message = defaultMessages.getMessage(code, args);
}
return message;
}
}
2.在extremecomponents的配置文件中配置该实现类
相关文章推荐
- extremecomponents使用struts2国际化信息的方法
- Struts2使用ActionSupport类中的validate方法验证用户登陆信息
- struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
- 在struts2 使用国际化的方法
- 沫沫金:Struts2中文国际化包级资源文件使用方法
- struts2的验证特定方法,验证框架,以及国际化的使用案例
- 使用Struts2关于页面信息国际化(简单的)
- struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
- Java 基础小知识一: 使用ResourceBundle 和 MessageFormat 实现国际化信息输出
- struts2 s:if标签以及 #,%{},%{#}的使用方法
- 使用minicom刷选关键信息的一种方法
- MVC使用Entity Framework更新数据库时出现手工添加的校验信息丢失的解决方法使用partial类
- Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法
- Androin学习笔记二十一:wifi的简单使用方法----获得本机或主机信息
- java日志信息 log4j 使用方法
- 【视频】配置信息管理 的 使用方法(一):数据库文档(Excel)的格式说明
- Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射 (
- C#使用timer定时在屏幕上输出信息的方法
- struts2标签使用css的方法
- Android开发之使用通知栏显示提醒信息的方法