在构建一个能影响全球用户的 Web 应鼡程序时有两点需要考虑。第一点是需要呈现本地化后的页面内容第二点是验证用户输入以及本地化后的验证消息显示。
使用资源包(特定于本地语言环境的属性文件)在服务器端构建此页面的本地化版本很容易同样地,也可以使用服务器端验证来显示本地化后的验證消息对于国际化而言,有很多具备良好支持的现成框架可用比如 Jakarta Struts、Spring、Tapestry 和 Freemarker。不过在几乎所有的这类框架内,都缺少对在客户端验证夲地化消息的现成支持
如果验证是在客户端进行的,将很难显示本地化后的验证消息通过在构建页面时提前处理整个页面(包括静态內容和必要的 JavaScript 验证消息)或从特定于本地语言环境的资源包解析出消息键,可以显示这些消息不过,上述方式具有一个暗含的限制:整個 JavaScript 验证逻辑都应在 JavaServer Page (JSP) 本身内编写以便基于 Java? 的消息键解析逻辑可被重用不要忘记,JavaScript 通常都是由页面设计人员编写的而这些设计人员并不┅定同时也掌握 Java 的开发技术。混合 Java 代码和 JavaScript 可能会让 Web 应用程序的开发和维护复杂化
联合使用 ajax格式 和资源包是另一种可以简化工作的方式。咜让您能将此验证 JavaScript 移到另一个文件而不是 JSP。并且只对需要的消息键进行解析,而不是像使用预先构造的本地化版本方法一样对所有消息键进行解析。
本文描述了如何联合使用 ajax格式 和资源包来简化本地化后的客户端验证消息处理我将侧重于使用 ajax格式 的强大功能,而不會涉及现成框架的复杂性本文所介绍的方式非常适合于需要快速响应的 Web mon;
和消息键对组成,并且这个消息键将在解析之后显示在该 HTML 元素内这里也会涉及到一个例程(displayMessage()
方法),用它来将解析后的消息正确地显示给相关的 HTML 元素
创建一个用于测试的客户机 JSP/HTML。这个页面(例如NewUserRegistration.js)有一些输入字段,这些字段的数据需要用 JavaScript 在客户端进行验证但是由于用户很有可能在输入数据时出错,因此验证逻辑应能立即用恰當的消息提示用户。由于此验证消息应该被本地化因而验证逻辑需要使用之前准备好的 ajax格式 实用程序来针对各类有效性问题显示特定于夲地语言环境的消息。
在表单字段上应用验证条件这个示例 JSP 具有一个表单,需要在此表单进行必要的输入以便完成用户的系统注册过程此外,还需要满足一些验证条件才能对它进行提交:
调用内的输入以便解析和显示本地化了的消息如果此表单通过了验证测试,它就会被提交给目标操作
将这个应用程序部署到任意一个 Web 服务器(例如,Tomcat)上并启动此服务器实例。然后打开一个浏览器实例(例如,Internet Explorer)找到客户机内设置的首选语言。它应该是 English如图 1 所示(单击 可以查看放大图)。
在除 User Name 字段外的所有字段输入值User Name 字段空着。按下 Submit应该会看到如图 3 所示的 User Name 行旁边的验证消息(英语)(单击 可以查看放大图)。
关閉浏览器的这个实例并打开一个新实例
再次浏览同一个(用户注册)页面。正确地输入所有字段“User Name” 字段仍旧留空。应该会看到 “User Name” 荇旁边显示的验证消息(印度语)如图 5 所示(单击 可以查看放大图)。
现在您应该了解了用 ajax格式 显示本地化后的客戶端验证消息是多么简单。尽管我已经尽可能简化了设置尽可能实现开箱即用,但本方式还是可以通过一些现成的系统和技术得到进一步改进例如,如果您的 Web 应用程序使用 Jakarta Struts 或其他类似框架而这些框架均能提供现成的、更完善的资源包的使用方法,那么您尽可以使用这些框架而不是自己创建的 ResourceManager.java 实用程序类。类似地JavaScript(和 ajax格式)例程也可以编写得更为完善和全面,从而满足您自己的 Web 应用程序的标准和要求