生成 JSON 元数据对象的典型方法

开发 前端
不需要把服务器端代码包含在 JavaScript 中,而保存的服务器端元数据和消息中的更改也不会影响客户端脚本。这种方法太棒了,是不是?好的,那就是使用基于JSON 对象时要做的。

如果只需在条件语句和警报中引用一个 JavaScript 变量而不是服务器端代码,您感觉怎么样?这段代码看上去是不是好多了?它没有在 JavaScript 中混入服务器代码。如果服务器端更改存储元数据的方法,则无需再重写客户机脚本。这会使 JSON 对象的日子更轻松些。#t#

您将使用一个 JavaScript 对象把我们的验证数据和消息分组到一个层级中。然后就像访问层级的 JavaScript 对象一样访问这些消息。就是这样,您已经做到了!当此 JSON 元数据对象就绪后,先前的 JavaScript 代码片段将类似。

  1. if(cc < vehicleValidationsMetadata.CC.minCC ||   
  2.                      cc > vehicleValidationsMetadata.CC.maxCC) {  
  3.      alert(vehicleValidationsMetadata.CC.RangeMessage);  
  4.      } 

现在,问题是谁来准备 JSON 元数据对象?嗯,只有服务器能做这项工作。服务器必须生成这个 JSON 对象,并将其提供给客户机(浏览器)。一些 Java API 可以帮助您准备此类(事实上是任意一类)JSON 对象。请参阅 参考资料 来查看那些 API。

生成 JSON 元数据对象的典型方法为:

  1. var vehicleValidationsMetadata = {  
  2.      "BrandName":{  
  3.                    "CanContainDigits":{false},  
  4.                "MaxWords":{2},  
  5.              "FormatMessage":{"Brand Name cannot contain digits."},   
  6.            "WordLimitMessage":{"Brand Name cannot contain more than two words"}  
  7.          }, "RegistrationNumber":{  
  8.              "CanContainAlphabets":{false},  
  9.               "CanContainDigits":{"true"},  
  10.                 "FormatMessage":{"Registration Number can contain only digits."}  
  11.      },  
  12.  "CC":{  
  13.               "minCC":{50},  
  14.                  "maxCC":{5000},  
  15.                 "FormatMessage":  
  16.              {"CC can only be numeric"},   
  17.                  "RangeMessage":{"CC can be within range of 50 and 5000"}  
  18.      }  
  19.  } 

为实体及其验证消息准备一个层级 Java 对象。 对这些实体及其验证消息调用 toString()。这些实体及其验证消息最有可能把一个 JSON 形式的字符串提供给您。
将该字符串另存到一个请求范围内。 在 JSP 中,获取该字符串,并将其指派到 JavaScript 变量值的大括号内。

最终的车辆元数据对象。

  1. function validateVehicleData() {  
  2.       var brandName = //get brand name from form field  
  3.    var registrationNumber = //get Registration Number from form field.  
  4.         var CC = //get CC from form field  
  5.    var brandNamebrandNameTokens = brandName.split(' ');  
  6.         if(brandNameTokens.length > vehicleValidationsMetadata.BrandName.MaxWords) {  
  7.             alert(vehicleValidationMessages.BrandName.WordLimitMessage);  
  8.        }  
  9.   .  
  10.   .  
  11.   .  
  12.   if((!vehicleValidationsMetadata.RegistrationNumber.CanContainAlphabets) &&   
  13.                      isNaN(parseInt(registrationNumber))) {  
  14.  alert(vehicleValidationMessages.RegistrationNumber.FormatMessage);  
  15.  }  
  16.   var ccNum = parseInt(CC);  
  17.   if(ccNum < vehicleValidationMessages.CC.minCC ||   
  18.                      ccNum > vehicleValidationMessages.CC.maxCC) {  
  19.                alert(vehicleValidationMessages.CC.RangeMessage);  
  20.   }  

服务器必须生成整个字符串,第一行和最后一行除外,因为当前的用户语言环境可能要求使用这些消息(并且只有服务器端代码能完成这项工作)。在这里,需要注意的一点是此元数据对象仅用于验证车辆。更理想的情况是将 JSON 对象对象封装到 person 元数据对象中。

那样,您就不需要再创建另一个 JSON 对象,而只需将该元数据对象包含到 person 元数据对象中。在将此元数据对象准备好后,您可以使用该对象中的元数据和消息来验证数据输入和显示消息。现在,验证车辆输入信息的 JavaScript 函数看上去就会跟 清单 4 一样。

责任编辑:chenqingxiang 来源: CSDN
相关推荐

2010-01-08 14:36:01

生成 JSON

2010-01-08 13:48:51

JSON 形式

2010-01-07 16:55:06

JSON字符串

2010-03-29 14:36:06

Oracle DICO

2010-02-22 11:02:06

WCF元数据

2011-03-04 14:58:40

jqueryJSON

2010-07-02 14:52:21

SQL Server元

2010-07-06 10:07:10

jQueryJSON

2015-02-05 13:15:37

2010-09-26 16:31:07

JVM参数配置

2014-09-18 16:46:51

大数据应用

2021-09-01 10:37:25

鸿蒙HarmonyOS应用

2021-11-11 12:45:36

PythonCSVJSON

2010-01-06 13:32:27

JSON数据

2019-02-11 08:48:07

XMLJSON前端

2020-07-20 07:56:28

JavaScript开发技术

2023-10-27 08:33:40

Go语言元编程

2013-03-27 13:34:49

数据清洗

2018-05-29 09:38:40

大数据金融行业银行业

2010-01-06 16:33:04

JSON对象标记
点赞
收藏

51CTO技术栈公众号