intra-mart Accel Platform 脚本开发模式编程指南 第16版2020-04-01

验证JSSP

关于JSSP验证程序

JSSP Validator是一项功能,用于验证请求参数值是否与脚本开发模式中的指定条件匹配。验证的结果是,如果它们不匹配,则会生成一条错误消息并执行指定的函数。

规格书

前提条件

JSSP验证程序可用于以下函数 。

  • js初始化时执行的init 函数
  • 在IMART标签的action属性指定的Action 函数
  • <imart type =“ form” />
  • <imart type =”提交” />
  • <imart type =”链接” />

验证的工作原理

../../../../_images/validation_sequence.png

JSSP验证程序根据以下流程执行该过程。

  1. 客户端发送了一个请求。
  2. JSSP验证程序根据验证配置文件中描述的规则来验证请求参数。
  3. 如果验证失败,则将错误消息添加到错误Object 。
  4. 如果错误Object 有错误消息,请执行错误处理程序函数 。如果没有错误消息,请执行由动作属性指定的Action 函数 ,例如初始化函数或形式。

验证规则

以下是验证规则的一览表 。 详细内容每个规则的详细信息, 详细内容 验证规则参考

验证规则一览表
关键 说明
必填项 必填项
阿尔法 值按字母顺序
字母数字 值是字母和数字
数值的 值是一个数字
数字 整数部分和小数部分中的位数
小写 小写字母
大写 字母的大写字母
整数 是整数
小数 是实数
最小长度 最小字串长度
最大长度 最大字符串长度
最小人数
最大值 最大人数
范围 数值范围
电邮 电邮地址
网址 网址
等于 平等
包含 包括
isIn 已包含
正则表达式 匹配正则表达式
档案 文件上传
mimeType 文件的MIME类型匹配
编号 可用于ID和代码系统的字符
id2 可以在URL中使用的ID和可以在代码系统中使用的字符
userCd 可用于用户代码的字符
日期 与账号上下文的日期和时间显示格式中包含的“日期(输入)”格式相同
时间 账号上下文的日期和时间显示格式中包含与“时间(输入)”相同的格式
日期时间 与账号上下文的日期和时间显示格式中包含的“日期(输入)” +“时间(输入)”相同的格式

编程方式

使用JSSP Validator的步骤如下。

  1. 在执行验证的函数中描述JSSP Validator注释。
  2. 创建一个验证配置文件并描述验证规则。
  3. 描述错误消息。
  4. 编写错误处理程序函数并执行错误处理。

JSSP验证器注释

在执行验证的函数中编写注释。在函数注释中编写@validate@onerror批注。

/ **
*初始化过程
*
* ・ ・ ・
* @validate foo / bar_validation#初始化
* @onerror handleErrors
* /
机能 初始化要求){
 ...
}
JSSP验证器注释
注解 说明
@验证
通过用“#”分隔来描述验证设置文件的路径和变量名。请省略文件扩展名。
例如,如果验证设置文件的路径为“ foo / bar_validation.js ”,变量名称为“ init ”,则请输入“ foo / bar_validation#init ”。
@onerror
描述错误处理程序的函数名称。描述@validate批注时,请确保还描述@onerror批注。
错误处理函数的错误处理函数请参考。

验证设置文件

在脚本路径的任何目录中创建一个js文件。
在此示例中,它是“%CONTEXT_PATH%/ WEB-INF / jssp / src / foo / bar_validation.js”。

描述变量的声明,并在属性中描述要验证的参数名称。在参数名称的属性中描述要验证的验证规则的关键字。

caption属性是生成错误消息所必需的。请务必描述。有关错误消息,请参见错误消息

在下面的示例中,确认请求参数“ xxx_name”是必填项目 ,并且不超过50个字符。

变种 初始化 = {
  'xxx_name' { //请求参数名称
       字幕 “ CAP.Z.EXAMPLE.NAME” //错误消息标题
       必填项 true
       最大长度 50
   }
}

验证设置文件中可以描述多个设置。使变量名称在配置文件中唯一。

var init = {'xxx_name':{...}} var updateXXX = {'xxx_name':{...}} var deleteXXX = {'xxx_name':{...}}

错误讯息

如果请求验证失败,则生成错误消息。

下面描述一个示例,其中在验证配置文件中描述的标题属性的值为“ CAP.Z.EXAMPLE.NAME”,验证规则为“ required”和“ maxlength”。

变种 初始化 = {
  'xxx_name' { //请求参数名称
       字幕 “ CAP.Z.EXAMPLE.NAME” //错误消息标题
       必填项 true
       最大长度 50
   }
}
在“%CONTEXT_PATH%/ WEB-INF / conf / message /”目录中的任何目录中创建属性文件。
在此示例中,它是“%CONTEXT_PATH%/ WEB-INF / conf / message / foo / bar-message_ja.properties”。
将错误消息的标题写为“ CAP.Z.EXAMPLE.NAME”作为属性文件中的键。
对于日语等多字节字符,必须转换为Unicode并进行描述。

在此示例中,标题为“名称”。

ž范例姓名=\ u540d \ u524d

在该示例中,由于在验证规则中设置了“ required”和“ maxlength”,因此请求验证失败时的错误消息如下。

名称为必填项。名称不得超过50个字符。

注解

处理多种语言的错误消息时,请根据需要为每种语言ID创建一个消息文件。
  • English-bar-message_zh.properties
  • Japanese-bar-message_ja.properties
  • 中文(简体)-bar-message_zh_CN.properties
  • 没有语言ID-bar-message.properties的消息文件
有关详细规格,请参见多语言

错误Object

错误Object 到验证失败已经存储的请求参数的错误消息。下图是一个示例。

../../../../_images/error_object.png

错误Object 的属性包含请求参数名称的数组,该属性包含验证失败的规则的键,该值包含错误消息。已成功验证的规则的键不存在。没有验证失败的参数存储没有属性的Object 。

getMessages方法针对未能验证所有请求参数的规则返回错误消息数组。

错误处理函数

验证所有请求参数的结果,如果任何参数验证失败,请执行错误处理程序函数 。用@onerror注释中描述的名称描述该函数 。

错误处理程序函数的第一请求发送到的参数Object ,第二个参数误差Object 将被传递到。获取存储在错误Object 的错误消息并执行错误处理。

在下面的示例中,获取了请求参数值和错误消息,并将其转发到错误页。

错误Object 的错误Object 请参考。

/ **
*初始化过程
*
* ・ ・ ・
* @onerror handleErrors
* /
机能 初始化要求){
 ...
}

/ **
*错误处理程序函数
*
* ・ ・ ・
* /
机能 handleErrors要求 validationErrors {
  变种 参数 = {
     要求
    错误 validationErrorsgetMessages()
  };
  向前“ foo / bar_error” 参数);
}

定制验证器

开发人员可以创建自己的验证规则。

注解

自定义验证器添加服务器端验证规则,而不是客户端规则。
如果要在客户端进行相同的验证,请在客户端定义类似的规则。

用JavaScript实现

在脚本路径的任何目录中创建一个js文件,并描述validate 函数 。
在此示例中,它是“%CONTEXT_PATH%/ WEB-INF / jssp / src / foo / custom_validator.js”。
/ **
*自定义验证器
*
* ・ ・ ・
* /
机能 验证要求 配置 paramName 字幕 {
  变种 价值 = 要求getParameterValueparamName);
  如果 条件 {
    归还 {isValid true};
  } 别的 {
    归还 {isValid false 讯息 “验证失败”};
  }
}

以下Object 将传递给validate 函数的参数。

验证函数参数
争论 型式 说明
要求 请求Object 请求Object
配置 Object ( 设置值的类型) 验证设置文件中描述的设置值
paramName 字符串类型 需要验证的参数名称
字幕 字符串类型 验证配置文件中描述的是设置值的caption属性设置值

请在validate 函数的返回值中返回以下结构的Object 。 如果验证成功,则将isValid属性设置为true,否则将设置为false。如果验证失败,请在message属性中设置一条错误消息。

../../../../_images/validate_result.png

用Java实现

创建jp.co.intra_mart.foundation.jssp.validation.Validator接口的实现类。

包装 ;

进口 jp.co.intra_mart.foundation.jssp.validation.InitParam;
进口 jp.co.intra_mart.foundation.jssp.validation.RequestInfo;
进口 jp.co.intra_mart.foundation.jssp.validation.ValidationResult;
进口 jp.co.intra_mart.foundation.jssp.validation.Validator;
进口 jp.co.intra_mart.system.javascript.Context;
进口 jp.co.intra_mart.system.javascript.Scriptable;

公开的  CustomValidator 实施 验证者 {

    @Override
    公开的 虚空 破坏() {
    }

    @Override
    公开的 验证结果 验证请求信息 资讯 {
        最后的 弦乐 价值 = 资讯getRequest()。getParameter资讯getParameterName());
        如果 条件 {
            归还 验证结果好啦();
        } 别的 {
            归还 验证结果ng“验证失败”);
        }
    }

    @Override
    公开的 虚空 初始化初始化参数 参数 语境 x 可编写脚本 范围 {
    }
}

有关参数和返回值的说明,请参阅API列表。

jssp-validation-config设置

编写jssp-validation-config。在“%CONTEXT_PATH%/ WEB-INF / conf / jssp-validation-config /”目录中创建一个文件。在此示例中,为“ jssp-validation-example-config.xml”。
以下是描述示例。 <validator-name>应该是系统唯一的有效验证规则密钥。当用JavaScript实现时,请在<validator-script>中描述创建的js文件的路径。请忽略扩展名。
如果使用Java实现,请在<validator-class>中描述创建的类名称,包括包路径。
将jssp-validation-config的字符代码保存在UTF-8中。
<?xml版本=“ 1.0”编码=“ UTF-8”?> <jssp-validation-config xmlns = “ http:// intra-mart .co.jp / system / jssp-validation” xmlns:xsi = “ http ://www.w3.org/2001/XMLSchema-instance“ xsi:schemaLocation = ” http:// intra-mart .co.jp / system / jssp-validation ../../schema/jssp-validation-config .xsd“ > <!-JavaScript设置示例- > <validator> <validator-name> js_example </ validator-name> <validator-script> foo / custom_validator </ validator-script> </ validator> <! -Java配置示例- > <validator> <validator-name> java_example </ validator-name> <validator-class> foo.CustomValidator </ validator-class> </ validator> </ jssp-validation-config>