xml 配置

web 配置 mvc 配置 config 配置 form 配置 多国语言配置 模板配置 微信企业号配置 微信服务号配置

form.xml配置

form配置文件应保存在WEB-INF目录下,文件名可自定义,utf-8 xml 格式

form配置文件的路径应对应 config 配置文件中的 system 节点中的 form 属性中

form配置文件对应 mvc 配置文件中的 form 属性

form配置文件的作用是持久化表单及在视图上显示

所有的节点及属性名称均为小写

示例

以上 form 在 insert 时生成的 SQL 语句为:

1. 节点

1.1. table 节点 必须

主表节点

可指定多个主表节点

1.2. one 节点

表节点,一对一副表配置,可以配置多个副表节点,必须建立在 table 节点下

1.3. many 节点

表节点,一对多副表配置,可以配置多个副表节点,必须建立在 table 节点下

1.4. field 节点

字段节点,对应 SQL 表的列

2. 表节点属性

2.1. table 必须

指定Sql表名

2.2. name

在java文件中操作时的名称,如不定义就是 table 属性

2.3. class

table节点属性,指定生成SQL语句前对数据合法性进行检查的类

类必须继承 com.foxcw.label.inter.FormCheckInterface 接口,构造函数可使用以下参数

com.foxcw.util.Request --servlet请求对象

2.4. method

在 one 节点属性中,在 update 模式时生效,指定 one 表单生成的方法

update --默认,按 update 生成 SQL 语句

insert --按 insert 生成 SQL 语句(追加)

del --按 delete 生成 SQL 语句

在 many 节点属性中,在 update 模式时生效,指定 many 表单生成的方法

del --默认,先 delete 原有数据,再按 insert 生成 SQL 语句

insert --按 insert 生成 SQL 语句(追加)

2.5. grant

table 节点属性,指定表单字段的权限检查类

权限类需继承 com.foxcw.label.inter.UserGrantsInterface 接口

2.6. model

one、many节点属性,指定生成SQL语句时对整个表的生效状态

insert --在插入模式时生效

update --在更新模式时生效

无此属性表示都生成SQL语句

2.7. empty

many节点属性,如果 many 表无数据是否会继续生成SQL

false --默认,可以没有 many 表数据

true --必须存在 many 数据

3. field 节点属性

3.1. field 节点 SQL 相关属性

3.1.1. name 必须

指定字段在 java 文件中操作的名称

3.1.2. column

字段对应的 SQL 列名,如果无此属性,则对应的列名为 name 字段

3.1.3. type

字段类型,默认为string

现支持以下几种类型:

支持7种数据类型,string,int,double,long,date,datetime,json

string - 字符串

int - 整数

double - 浮点数

long - 长整型

date - 日期

datetime - 日期时间

json - json数据

3.1.4. model

生成SQL语句时字段的生效状态

insert - 在插入模式时生效

update - 在更新模式时生效

show - 此字段仅用于显示,不会生成在sql语句中

无此属性代表生成SQL语句时都要生成此字段

3.1.5. function

在生成 SQL 语句前先要执行的自定义函数,自定义函数应该返回一个值

函数返回的值会替换掉表单提交到服务器的值

3.1.6. md5

字段 type 为 string 时生效

boolen类型

为字段应用MD5加密

3.2. field 节点验证合法性相关属性

3.2.1. empty

字段是否可为空,默认为 false

false - 可为空,true - 非空

如果类型为数字型,那么 false 代表可为0,true 非0

3.2.2. check

使用默认验证器验证字段合法性,为JSON格式字段

示例

check="{uq:"select UserName from user where sortid=%s UserName='%s'",

uqkey:'sortid,username',

mt:0,"

fk:'select id from car_view where ID=%s'}"

3.2.2.1. uq , unique

sql 唯一性检查

3.2.2.2. uqkey , uniquekey

唯一性检查 SQL 语句有多个变量时使用,key中的字段值通过 request 传递

uq 对应 uqkey , unique 对应 uniquekey

3.2.2.3. fk , foreignkey

sql 外键检查

3.2.2.4. = , equals

是否等于字段检查

3.2.2.5. != , ne , notequals

是否不等于字段检查

3.2.2.6. > , mt , morethan

是否大于字段检查

3.2.2.7. < , lt , lessthan

是否小于字段检查

3.2.2.8. >= , nlt , notlessthan

是否大于等于字段检查

3.2.2.9. <= , nmt , notmorethan

是否小于等于字段检查

以上标题中按逗号分开,代表同一种验证方式的不同键名,如 uq , unique 的使用效果一样的

比较型验证值定义:

字段类型为数字时,值可以是数字或同一个 form 的字段名,数字只能和数字比较(int,double,long)

字段类型为字符型时,值只能是整数,验证的是字符的长度

字段类型为日期时,值可以是数字、日期、同一个 form 的字段名、以下列表中的固定值

日期型字段有以下固定值,可以使用在日期型字段比较中:

$day -- 今天(如:{lt:'$day'},意思就是当前字段须小于今天)

$yesterday -- 昨天

$tomorrow -- 明天

$month -- 本月

$year -- 本年

日期时间型字段在以上基础上增加一个:

$datetime -- 当前日期时间

日期型字段为数字时,是以当前服务器时间为基准,以数字增加或减少相应的天数,如当前时间为2015-09-14,验证为{!=:-2},意思就是要验证的日期不能等于2015-09-12

3.3. field 节点 view 显示相关属性

3.3.1. dec

字段的友好名称

3.3.2. show

字段在网页上的具体表现

可通过重写默认函数 form 来改变表现方式

默认的 form 函数使用 WEB-INF/form.xml 来定义显示方式

radio - 显示为单选按钮

checkbox - 显示为多选按钮

textarea - 显示为多行文本框

link - 显示为ID选择器(需JavaScript支持)

file - 显示为上传文件

long - 显示为文本输入框

date - 显示为日期选择框

datetime - 显示为日期时间选择框

json - 显示为文本输入框

password - 显示为密码输入框

3.3.3. noshow

是否在网页上显示字段

true - 不显示

insert - 不在插入模式显示

update - 不在更新模式显示

无此属性代表都要显示

3.3.4. novalue

是否在网页上显示值,默认为 true

true - 显示

false - 不显示

3.3.5. valuelist

字段 show 为 radio、checkbox、select 时生效,要生成的值列表,JSON字段,支持服务器标签

json键 - 对应输入表单的值

json值 - 对应输入表单的显示名称

特殊键 - default,值为默认选中的值

示例:

valuelist="{'0':'请选择类别',${xml[sort]}'${xml.id}':'${xml.sortname}',${end.xml}}"

以上示例会将xml标签中的内容解析后再生成相应表单

3.3.6. default

在 insert 模式时默认显示的值

3.3.7. attr

字段的自定义属性,JSON字段,支持服务器标签

示例

attr="{key:'userid',url:'user/select.lz?mode=select%26disable=0'}"

以上示例会在输入框中生成两个属性key='userid' url='user/select.lz?mode=select&disable=0'

3.4. field 节点 one、many 专用属性

3.4.1. primary

table 表专用属性,自增主键字段

一个表必须要定义一个 primary 字段,也只能定义一次

如果在 insert 模式时通过function属性指定了此值,那么将会使用指定的值,而不是自增值

3.4.2. join

副表专用属性,指定副表和主表的关联字段

如果列定义了 join 属性,而没有定义 name 属性,那么副表链接的列名自动定义为 mainid

暂时只支持 int 类型

3.4.3. master 有 many 表节点时必须

many表专用属性,many表的主要字段,通过此字段来确定 many 表的长度

3.4.4. where

副表专用属性,生成的SQL语句的附加条件

3.4.5. nulldel

many表专用属性,列的主要字段为null或为0时是否删除行