使用 IBM Rational Application Developer 轻松实现 JavaServer Faces Web 程序的全球化
2009-10-08 00:00:00 来源:WEB开发网到目前为止,我们已经介绍了 JWLhxclient 脚本是怎样帮助您处理客户端的数字分析和格式问题。在例子中的代码中,我们总是需要得到服务器端的场所信息,以生成格式模式。因此,在接下来的章节中,我们将会讨论更高级的话题,就是场所信息是怎样传递的,以及在 JSF 网络程序中是怎样使用这些信息的。
在多线程 JSF 程序中全球化道路的风险
使用 JSF 进行全球化很容易,但是并不是极简单的。特别是在多线程的程序中,如果设计缺乏完善的考虑,错误的假设将会使得您的全球化支持,变得更像是应用一系列的补丁。接下来我们将要介绍的技术,将会使得您的多线程 JSF 程序变得更加强壮。
决定显示的语言
全球化通常构建于场所的基础之上。因此,怎样实现全球化归根结底就是怎样处理场所。在获取场所信息之后,您已经可以决定基于场所用户界面中显示的语言。在大多数情况下,JSF 框架会关注带有 <loadBundle> 标签的语言包,它根据场所请求获取包,而不需要额外的编码。但是如果您需要使用 Java 代码中的语言包内容,那么您就需要使用场所信息来获取包的路径,然后自己格式化信息。列表 10 给出了范例代码。
列表 10. 一个简单的信息格式化范例
public class MessageFormatter {
private static final String MESSAGE_BUNDLE_NAME = "com.ibm.sample.messages";
private static String formatMessage(String msgKey, Object[] args,Locale locale) {
ResourceBundle messageBundle = ResourceBundle.getBundle(MESSAGE_BUNDLE_NAME,locale);
String message = messageBundle.getString(msgKey);
if (message != null) {
if (args == null) {
return message;
} else {
return MessageFormat.format(message, args);
}
} else {
return msgKey;
}
}
}
更多精彩
赞助商链接