JEECG智能化開(kāi)發(fā)平臺(tái)V3開(kāi)發(fā)指南_第1頁(yè)
JEECG智能化開(kāi)發(fā)平臺(tái)V3開(kāi)發(fā)指南_第2頁(yè)
JEECG智能化開(kāi)發(fā)平臺(tái)V3開(kāi)發(fā)指南_第3頁(yè)
JEECG智能化開(kāi)發(fā)平臺(tái)V3開(kāi)發(fā)指南_第4頁(yè)
JEECG智能化開(kāi)發(fā)平臺(tái)V3開(kāi)發(fā)指南_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

./JEECG智能開(kāi)發(fā)平臺(tái)V3開(kāi)發(fā)指南2013/4/2張代浩目錄1.前言41.1.技術(shù)背景41.2.平臺(tái)介紹41.3.平臺(tái)優(yōu)勢(shì)51.4.平臺(tái)架構(gòu)62.JEECG框架初探82.1.演示系統(tǒng)82.2.示例代碼103.JEECG開(kāi)發(fā)環(huán)境搭建123.1.JAVA環(huán)境配置123.2.開(kāi)發(fā)環(huán)境搭建133.2.1.項(xiàng)目導(dǎo)入開(kāi)發(fā)環(huán)境133.2.2.數(shù)據(jù)庫(kù)初始化153.2.3.項(xiàng)目數(shù)據(jù)源配置163.2.4.項(xiàng)目啟動(dòng)測(cè)試174.代碼生成器194.1.數(shù)據(jù)表創(chuàng)建194.2.代碼生成器配置194.3.代碼生成204.4.功能測(cè)試224.4.1.添加菜單并授權(quán)224.4.2.功能測(cè)試234.5.代碼生成器使用規(guī)則234.5.1.建表規(guī)范234.5.2.頁(yè)面生成規(guī)則245.查詢(xún)HQL過(guò)濾器265.1.數(shù)據(jù)過(guò)濾現(xiàn)狀分析265.2.查詢(xún)條件SQL生成器265.2.1.實(shí)現(xiàn)原理265.2.2.查詢(xún)規(guī)則265.2.3.具體實(shí)現(xiàn)276.表單校驗(yàn)組件ValidForm296.1.Validform使用入門(mén)296.2.綁定附加屬性296.3.初始化參數(shù)說(shuō)明336.4.Validform對(duì)象[方法支持鏈?zhǔn)秸{(diào)用]386.5.調(diào)用外部插件446.6.Validform的公用對(duì)象447.基礎(chǔ)用戶權(quán)限467.1.權(quán)限設(shè)計(jì)467.2.權(quán)限設(shè)計(jì)目標(biāo)477.3.目前系統(tǒng)設(shè)計(jì)477.3.1.數(shù)據(jù)表477.3.2.頁(yè)面菜單478.JEECG注意規(guī)則499.項(xiàng)目編碼規(guī)范509.1.項(xiàng)目編碼規(guī)范509.2.詳細(xì)說(shuō)明5010.JEECG目錄結(jié)構(gòu)5210.1.配置文件目錄結(jié)構(gòu)5210.2.Java源碼目錄結(jié)構(gòu)5210.3.單元測(cè)試代碼結(jié)構(gòu)5310.4.JSP頁(yè)面目錄結(jié)構(gòu)5311.附錄5411.1.UI庫(kù)常用控件參考示例5411.2.開(kāi)發(fā)技巧:采用IFrame打開(kāi)頁(yè)面5511.3.開(kāi)發(fā)技巧:組合查詢(xún)實(shí)現(xiàn)方法551.

前言1.1.

技術(shù)背景隨著WEB

UI

框架<EasyUI/Jquery

UI/Ext/DWZ>等的逐漸成熟,系統(tǒng)界面逐漸實(shí)現(xiàn)統(tǒng)一化,代碼生成器也可以生成統(tǒng)一規(guī)范的界面!代碼生成+手工MERGE半智能開(kāi)發(fā)將是新的趨勢(shì),生成的代碼可節(jié)省50%工作量,快速提高開(kāi)發(fā)效率!1.2.

平臺(tái)介紹JEECG

[J2EE

Code

Generation]

是一款基于代碼生成器的智能開(kāi)發(fā)平臺(tái),采用代碼生成+手工MERGE半智能開(kāi)發(fā)模式,

可以幫助解決Java項(xiàng)目60%的重復(fù)工作,讓開(kāi)發(fā)更多關(guān)注業(yè)務(wù)邏輯。既能快速提高開(kāi)發(fā)效率,幫助公司節(jié)省人力成本,同時(shí)又不失擴(kuò)展性和靈活性。

JEECG宗旨:簡(jiǎn)單功能由代碼生成器生成使用;

復(fù)雜業(yè)務(wù)采用表單自定義,業(yè)務(wù)流程使用工作流來(lái)實(shí)現(xiàn)、擴(kuò)展出任務(wù)接口,供開(kāi)發(fā)編寫(xiě)業(yè)務(wù)邏輯。

實(shí)現(xiàn)了流程任務(wù)節(jié)點(diǎn)和任務(wù)接口的靈活配置,既保證了公司流程的保密行,又減少了開(kāi)發(fā)人員的工作量。

JEECG

V3.0版本推翻原有SSH2架構(gòu),采用SpringMVC+Hibernate+UI快速開(kāi)發(fā)庫(kù)作為基礎(chǔ)架構(gòu),采用面向聲明的開(kāi)發(fā)模式,基于泛型方式編寫(xiě)極少代碼即可實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)展示、數(shù)據(jù)編輯、表單處理等功能,再配合代碼生成器的使用將JavaEE的開(kāi)發(fā)效率提高6倍以上,可以將代碼減少60%以上。JEECG

V3.0版本四大技術(shù)點(diǎn):

1.代碼生成器

2.UI快速開(kāi)發(fā)庫(kù)

3.在線流程設(shè)計(jì)

4.系統(tǒng)日志記錄?!?/p>

代碼生成器:支持多種數(shù)據(jù)模型,根據(jù)表生成對(duì)應(yīng)的Entity,Service,Dao,Controller,

JSP等,增刪改查功能生成直接使用·

UI快速開(kāi)發(fā)庫(kù):針對(duì)WEB

UI進(jìn)行標(biāo)準(zhǔn)封裝,頁(yè)面統(tǒng)一采用UI標(biāo)簽實(shí)現(xiàn)功能:數(shù)據(jù)datagrid,表單校驗(yàn),Popup,Tab等,實(shí)現(xiàn)JSP頁(yè)面零JS,開(kāi)發(fā)維護(hù)非常高效·

在線流程設(shè)計(jì):在線流程定義,采用開(kāi)源Activiti流程引擎,實(shí)現(xiàn)在線畫(huà)流程,自定義表單,表單掛接,業(yè)務(wù)流轉(zhuǎn),流程監(jiān)控,流程跟蹤,流程委托等·

系統(tǒng)日志記錄:系統(tǒng)操作日志詳細(xì)記錄,幫助運(yùn)維人員進(jìn)行系統(tǒng)分析和故障排查。V3版本特性·

JEECG

V3.0,經(jīng)過(guò)了專(zhuān)業(yè)壓力測(cè)試,性能測(cè)試,保證后臺(tái)數(shù)據(jù)的準(zhǔn)確性和頁(yè)面訪問(wèn)速度·

支持多種瀏覽器:

IE,

火狐,

Google

等瀏覽器訪問(wèn)速度都很快·

支持?jǐn)?shù)據(jù)庫(kù):

Mysql,Oracle10g等·

基礎(chǔ)權(quán)限:

用戶,角色,菜單權(quán)限,按鈕權(quán)限,數(shù)據(jù)權(quán)限·

智能報(bào)表集成:

簡(jiǎn)易的圖像報(bào)表工具和Excel導(dǎo)入導(dǎo)出·

Web容器測(cè)試通過(guò)的有Jetty和Tomcat6·

待推出功能:分布式部署,云計(jì)算,移動(dòng)平臺(tái)開(kāi)發(fā),規(guī)則引擎,代碼生成器<eclipse插件>·

要求JDK1.6+1.3.

平臺(tái)優(yōu)勢(shì)ü

采用主流開(kāi)源技術(shù)框架,容易上手;

代碼生成器依賴(lài)性低,很方便的擴(kuò)展能力,可完全實(shí)現(xiàn)二次開(kāi)發(fā);ü

開(kāi)發(fā)效率很高,代碼生成器支持多種數(shù)據(jù)模型:?jiǎn)伪頂?shù)據(jù)模型、單表自關(guān)聯(lián)模型和一對(duì)多<父子表>數(shù)據(jù)模型,代碼生成功能直接使用;ü

查詢(xún)SQL過(guò)濾器,后臺(tái)不需要寫(xiě)代碼,頁(yè)面追加查詢(xún)字段,查詢(xún)功能自動(dòng)實(shí)現(xiàn)ü

頁(yè)面校驗(yàn)自動(dòng)生成<必須輸入、數(shù)字校驗(yàn)、金額校驗(yàn)、時(shí)間控件等>;ü

基礎(chǔ)的用戶權(quán)限:菜單,按鈕權(quán)限,角色ü

常用共通封裝,各種工具類(lèi)<定時(shí)任務(wù),短信接口,郵件發(fā)送,Excel導(dǎo)出等>,基本滿足80%項(xiàng)目需求ü

集成簡(jiǎn)易報(bào)表工具,圖像報(bào)表和數(shù)據(jù)導(dǎo)出非常方便,可極其方便的生成pdf、excel、word等報(bào)表;ü

集成工作流引擎Activiti5,并實(shí)現(xiàn)了只需在頁(yè)面配置流程轉(zhuǎn)向,可極大的簡(jiǎn)化工作流的開(kāi)發(fā);用Activiti5的流程設(shè)計(jì)器畫(huà)出流程走向,一個(gè)工作流基本就完成了,只需進(jìn)行流程的配置或者寫(xiě)很少量的java代碼1.4.

平臺(tái)架構(gòu)架構(gòu)技術(shù):

Spring

MVC+Hibernate4+UI快速開(kāi)發(fā)庫(kù)+Spring

JDBC+Highcharts圖形報(bào)表+Jquery+Ehcache。設(shè)計(jì)思想:

零配置〔

約定大于配置各技術(shù)點(diǎn)說(shuō)明[1]

代碼生成器代碼生成器用于生成規(guī)范的后臺(tái)代碼+統(tǒng)一風(fēng)格的前臺(tái)頁(yè)面+表單校驗(yàn)。單表模型,單表自關(guān)聯(lián)模型和一對(duì)多<父子表>數(shù)據(jù)模型,增刪改查功能生成直接使用;特點(diǎn):A.前臺(tái)頁(yè)面字段對(duì)應(yīng)數(shù)據(jù)庫(kù)字段生成;B.

頁(yè)面字段校驗(yàn)自動(dòng)生成〔數(shù)字類(lèi)型\必須項(xiàng)\金額類(lèi)型\時(shí)間控件\郵箱\手機(jī)號(hào)\QQ號(hào)等等>;

C.支持Oracle/Mysql/Postgres數(shù)據(jù)庫(kù)注意:代碼生成包括JSP頁(yè)面生成,代碼無(wú)需修改,增刪改查功能直接配置使用[2].查詢(xún)條件過(guò)濾器頁(yè)面加查詢(xún)條件,后臺(tái)不需要寫(xiě)任何邏輯判斷,動(dòng)態(tài)拼HQL追加查詢(xún)條件[3].UI快速開(kāi)發(fā)庫(kù)UI快速開(kāi)發(fā)庫(kù),針對(duì)WEB

UI進(jìn)行標(biāo)準(zhǔn)封裝,頁(yè)面統(tǒng)一采用UI標(biāo)簽實(shí)現(xiàn)功能:數(shù)據(jù)datagrid,表單校驗(yàn),Popup,Tab等,實(shí)現(xiàn)JSP頁(yè)面零JS,開(kāi)發(fā)維護(hù)非常高效[4].智能工作流在線流程定義,采用開(kāi)源Activiti流程引擎,實(shí)現(xiàn)在線畫(huà)流程,自定義表單,表單掛接,業(yè)務(wù)流轉(zhuǎn),流程監(jiān)控,流程跟蹤,流程委托等[5].表單Form校驗(yàn)組件前臺(tái)頁(yè)面字段校驗(yàn)采用Validform

表單檢驗(yàn)組件[6].常用共通封裝數(shù)據(jù)字典/

郵件發(fā)送/

定時(shí)任務(wù)/短信接口/Freemarker模板工具/Jquery[7].基礎(chǔ)用戶權(quán)限權(quán)限功能:用戶、角色、權(quán)限〔菜單權(quán)限+按鈕權(quán)限[8].Ehcache緩存機(jī)制Ehcache緩存自定義標(biāo)簽〔永久緩存/臨時(shí)緩存[9].報(bào)表封裝Excel簡(jiǎn)易導(dǎo)出工具類(lèi)+Highcharts圖形報(bào)表[10].Hibernate+Spring

jdbc

組合使用Hibernate+Spring

jdbc組合使用〔單表操作使用Hibernate;復(fù)雜SQL采用SQL,<1>

SQL設(shè)計(jì)方案:DB

SQL抽離出Java代碼,采用命名規(guī)范根據(jù)類(lèi)名和方法名創(chuàng)建SQL文件,存儲(chǔ)SQL;

<2>

程序自動(dòng)讀取SQL;<3>

SQL讀取模式:開(kāi)發(fā)模式和發(fā)布模式[SQL加載內(nèi)存]。[11].安全的事務(wù)回滾機(jī)制+安全的數(shù)據(jù)樂(lè)觀鎖機(jī)制[12].系統(tǒng)日志記錄,便于問(wèn)題追蹤2.

JEECG框架初探2.1.

演示系統(tǒng)打開(kāi)瀏覽器,輸入JEECG演示環(huán)境地址::8080,可以看到如圖

21所示的登錄界面。圖

2-1

演示系統(tǒng)登錄界面點(diǎn)擊[登陸]按鈕,進(jìn)入演示系統(tǒng)的主界面,如圖

22所示。圖

2-2

演示系統(tǒng)主界面在JEECG演示系統(tǒng)中的功能模塊包括系統(tǒng)管理、流程管理、業(yè)務(wù)申請(qǐng)、業(yè)務(wù)辦理、常用功能演示等。其中,用戶管理、流程設(shè)計(jì)器的界面截圖如圖

2-3和圖

2-4所示。圖

2-3

用戶管理界面圖

24

流程設(shè)計(jì)器2.2.

示例代碼用戶管理中的用戶列表和用戶維護(hù)所用的jsp頁(yè)面代碼分別如圖

25和圖

26所示。圖

25

列表頁(yè)面代碼圖

26

用戶管理頁(yè)面代碼3.

JEECG

開(kāi)發(fā)環(huán)境搭建JEECG推薦的開(kāi)發(fā)環(huán)境為Myeclipse6.5/Eclipse3.7+JDK1.6+Tomcat6.03.1.

JAVA環(huán)境配置通過(guò)Oracle的官方地址下載JDK開(kāi)發(fā)包:推薦下載最新的Java

SE

6版本,目前最新的Java

SE

6

SDK版本為Update

43,如圖

31所示。圖

31

最新SDK下載鏈接將下載的開(kāi)發(fā)包安裝到本機(jī)非中文路徑的目錄中,如本機(jī)的。安裝完JDK之后,需要配置本機(jī)的環(huán)境變量如下:PATH=%JAVA_HOME%/bin;Classpath=.;%JAVA_HOME%\lib;3.2.

開(kāi)發(fā)環(huán)境搭建3.2.1.

項(xiàng)目導(dǎo)入開(kāi)發(fā)環(huán)境將下載到的源代碼解壓到本地磁盤(pán),通過(guò)eclipse的Import->Existing

Projects

into

Workspace功能將源代碼導(dǎo)入到MyEclipse開(kāi)發(fā)環(huán)境中,在項(xiàng)目導(dǎo)入之后,需要對(duì)編譯環(huán)境進(jìn)行檢查,如果編譯環(huán)境中缺少J2EE支持的話,需要手動(dòng)加上,如圖

32所示。圖

32

Myeclipse編譯環(huán)境如果你使用的是eclipse,而不是MyEclipse做為開(kāi)發(fā)工具,將項(xiàng)目導(dǎo)入到eclipse之后,需要為項(xiàng)目添加eclipse的WTP項(xiàng)目支持。在導(dǎo)入的工程上右鍵Propertis->Project

Facets,選擇Convert

to

faceted

from…,如圖

33所示。圖

33

為工程添加WTP項(xiàng)目支持在打開(kāi)的界面中,勾選"Dynamic

Web

Module"和"Java",分別選擇其Version為2.5和1.6,并為項(xiàng)目添加Tomcat的運(yùn)行時(shí)支持,如圖

34所示。圖

34

Project

Facets及運(yùn)行時(shí)選擇選擇完P(guān)roject

Facets之后,點(diǎn)擊界面下方的"Futher

configuration

avaliable"鏈接,在彈出的新窗口中,填寫(xiě)Content

directory的值為"WebRoot",并將Generate

web.xml

deployment

descriptor前面的復(fù)選框取消勾選,并為"Content

root"命名為合適的值,如圖

35所示。圖

35

Web

Module設(shè)置確定之后,完成對(duì)工程的web化支持。3.2.2.

數(shù)據(jù)庫(kù)初始化在mysql數(shù)據(jù)庫(kù)中新建一編碼為UTF8的數(shù)據(jù)庫(kù)jeecg。通過(guò)命令:mysql

-proot

-uroot

jeecg

<

d:/projects/jeecg/doc/jeecgv3-init.sql將工程目錄中的doc

/

jeecgv3-init.sql腳本導(dǎo)入到新建的jeecg數(shù)據(jù)庫(kù)中。此時(shí)使用show

tables;命令查看數(shù)據(jù)庫(kù)中的表,可以看到如圖

36的結(jié)果,已經(jīng)有70張表入庫(kù)。圖

36

數(shù)據(jù)庫(kù)初始化3.2.3.

項(xiàng)目數(shù)據(jù)源配置對(duì)數(shù)據(jù)庫(kù)進(jìn)行初始化之后,需要相應(yīng)地對(duì)項(xiàng)目中的數(shù)據(jù)源連接進(jìn)行配置。修改項(xiàng)目的數(shù)據(jù)源連接配置文件resources/perties,如圖

37所示。圖

37

項(xiàng)目數(shù)據(jù)源配置修改項(xiàng)目中的代碼生成器數(shù)據(jù)源連接配置文件resources/jeecg/jeecg_database.

properties,如圖

38所示。圖

38

代碼生成器的數(shù)據(jù)源配置另外,根據(jù)自己的需要對(duì)代碼生成器的相關(guān)參數(shù)進(jìn)行配置,配置文件為resources/jeecg/jeecg_perties。3.2.4.

項(xiàng)目啟動(dòng)測(cè)試配置完成之后,啟動(dòng)Tomcat,在瀏覽器地址欄中輸入http://localhost:8080/jeecg/,打開(kāi)的界面如圖

39所示。圖

39

項(xiàng)目登錄頁(yè)面輸入用戶名密碼admin/123456,登陸進(jìn)入主界面,如圖

310所示。圖

310

項(xiàng)目主界面至此,開(kāi)發(fā)環(huán)境搭建完成。4.

代碼生成器本章通過(guò)一個(gè)實(shí)際的示例來(lái)講解JEECG代碼生成器的使用。4.1.

數(shù)據(jù)表創(chuàng)建現(xiàn)在有一張員工表person,其建表SQL為:CREATE

TABLE

`person`

<

`ID`

varchar<32>

NOT

NULL

default

''

COMMENT

'主鍵',

`NAME`

varchar<32>

default

NULL

COMMENT

'用戶名',

`AGE`

int<11>

default

NULL

COMMENT

'年齡',

`SALARY`

decimal<10,2>

default

NULL

COMMENT

'工資',

`createDt`

datetime

default

NULL

COMMENT

'創(chuàng)建時(shí)間',

PRIMARY

KEY

<`ID`>>

ENGINE=InnoDB

DEFAULT

CHARSET=utf8;注意:建表時(shí),必須給每個(gè)字段加上注釋,代碼生成器會(huì)根據(jù)注釋去生成頁(yè)面字段對(duì)應(yīng)的顯示文本。將建表SQL在數(shù)據(jù)庫(kù)管理器里面執(zhí)行,完成對(duì)person表的創(chuàng)建。4.2.

代碼生成器配置代碼生成器有兩個(gè)配置文件:一個(gè)用于數(shù)據(jù)源的配置,一個(gè)用于代碼生成器的參數(shù)配置。這兩個(gè)配置文件分別是resources/jeecg目錄的jeecg_perties和jeecg_perties。參數(shù)配置文件jeecg_perties的各參數(shù)說(shuō)明如表

41所示:表

41

代碼生成器參數(shù)說(shuō)明source_root_packageSource

floders

on

build

path

<JAVA文件的根目錄>src

webroot_packageWEB應(yīng)用文件的根目錄〔例如:jspWebRoot

bussi_package業(yè)務(wù)包〔舉例:比如ERP中的一個(gè)大的模塊

銷(xiāo)售模塊目錄特點(diǎn):支持多級(jí)目錄例如[com.sys]Demo

templatepath代碼生成器使用的模板文件目錄jeecg/template

system_encoding項(xiàng)目編碼utf-8

jeecg_generate_table_id自定義主鍵命名id目前表主鍵只能命名IDjeecg_ui_search_filed_num配置代碼生成器生成的JSP頁(yè)面,默認(rèn)前幾個(gè)字段生成查詢(xún)條件1

jeecg_filed_convert數(shù)據(jù)庫(kù)表字段轉(zhuǎn)換為實(shí)體字段是采用原生態(tài),還是采用駝峰寫(xiě)法轉(zhuǎn)換truetrue/false4.3.

代碼生成打開(kāi)代碼生成器并輸入相應(yīng)的參數(shù)如圖

41所示。圖

41

員工信息維護(hù)的代碼生成器執(zhí)行[生成]之后,可以在源代碼目錄src中看到新生成的java代碼文件,如圖

42所示。圖

42

生成的java文件同樣地,可以在WebRoot/webpage中看到新生成的jsp頁(yè)面,如圖

43所示。圖

43

生成的JSP文件

生成代碼結(jié)構(gòu)說(shuō)明

1.添加和修改頁(yè)面在一個(gè)JSP頁(yè)面中2.service層接口和實(shí)現(xiàn)都繼承父類(lèi)4.4.

功能測(cè)試4.4.1.

添加菜單并授權(quán)重新啟動(dòng)Tomcat,進(jìn)入系統(tǒng)主界面->系統(tǒng)管理->菜單管理,點(diǎn)擊菜單錄入,添加員工管理菜單,如圖

44所示。圖

44

員工管理的菜單添加菜單添加完成之后,需要將該菜單分配給管理員角色,再次刷新頁(yè)面,可以在系統(tǒng)管理模塊下看到子菜單[員工管理],如圖

45所示。圖

45

新增的員工管理菜單項(xiàng)4.4.2.

功能測(cè)試點(diǎn)擊菜單項(xiàng)[員工管理],打開(kāi)員工管理的主界面如圖

46所示。圖

46

員工管理主界面點(diǎn)擊[錄入]按鈕,在彈出的對(duì)話框中錄入員工基本信息,如圖

47所示。圖

47

員工信息錄入點(diǎn)擊確定按鈕,對(duì)信息進(jìn)行保存,此時(shí)可以在用戶列表中看到新錄入的信息,同時(shí)在數(shù)據(jù)庫(kù)中也可以看到數(shù)據(jù)被保存入庫(kù),如圖

48所示。圖

48

信息被正確保存入庫(kù)4.5.

代碼生成器使用規(guī)則4.5.1.

建表規(guī)范1.

表必須有唯一主鍵:

ID〔字符類(lèi)型

32位

備注:

主鍵采用UUID方式生成主鍵支持自定義,修改jeecg_perties的參數(shù)[jeecg_generate_table_id]即可;2.

表必需字段〔創(chuàng)建人,創(chuàng)建時(shí)間等..3.

表字段必須有注釋備注:

JSP頁(yè)面字段文本,是根據(jù)表字段注釋來(lái)生成4.

主表和子表的外鍵字段名字,必須相同〔除主鍵OBID外5.

子表引用主表主鍵OBID作為外鍵,外鍵字段必須以O(shè)BID結(jié)尾注:請(qǐng)按照建表模板表

42來(lái)創(chuàng)建新表,模板表中原有的字段,生成器會(huì)過(guò)濾不在頁(yè)面生成。表

42

建表模板IDvarchar36主鍵TURE其他字段..

CREATE_BYvarchar36創(chuàng)建人

CREATE_NAMEvarchar32創(chuàng)建人名字

CREATE_DATEdatetime0創(chuàng)建時(shí)間

UPDATE_BYvarchar36修改人

UPDATE_NAMEvarchar32修改人名字

UPDATE_DATEdatetime0修改時(shí)間

DELFLAGint2刪除標(biāo)記

DEL_DATEdatetime0刪除時(shí)間

4.5.2.

頁(yè)面生成規(guī)則說(shuō)明:JSP頁(yè)面字段的文本內(nèi)容,取表字段的注釋前6位字符<如果建表字段注釋為空,則頁(yè)面字段文本會(huì)為空>A.默認(rèn)生成的JSP頁(yè)面前五個(gè)字段為必須項(xiàng),其他字段為非必須輸入〔需要自己手工加B.數(shù)據(jù)庫(kù)字段類(lèi)型為:datetime

-->對(duì)應(yīng)頁(yè)面字段,會(huì)自動(dòng)追加[年月日-時(shí)分秒]時(shí)間控件C.數(shù)據(jù)庫(kù)字段類(lèi)型為:date

-->對(duì)應(yīng)頁(yè)面會(huì)字段,自動(dòng)追加[年月日]時(shí)間控件D.數(shù)據(jù)庫(kù)字段類(lèi)型為:Int/Number-->對(duì)應(yīng)頁(yè)面字段,會(huì)自動(dòng)追加數(shù)字校驗(yàn)〔不允許輸入小數(shù)E.數(shù)據(jù)庫(kù)字段類(lèi)型為:float/double/decimal-->對(duì)應(yīng)頁(yè)面頁(yè)面字段,會(huì)自動(dòng)追加數(shù)字校驗(yàn)〔允許輸入小數(shù)F.如果表字段為字符類(lèi)型,并且設(shè)置了長(zhǎng)度,頁(yè)面輸入框會(huì)自動(dòng)設(shè)置maxlength對(duì)應(yīng)表字段長(zhǎng)度5.

查詢(xún)HQL過(guò)濾器5.1.

數(shù)據(jù)過(guò)濾現(xiàn)狀分析項(xiàng)目開(kāi)發(fā)的查詢(xún)頁(yè)面都會(huì)有很多查詢(xún)條件,開(kāi)發(fā)追加查詢(xún)條件的工作繁瑣又很浪費(fèi)時(shí)間。這塊工作量主要在:頁(yè)面加查詢(xún)字段和后臺(tái)代碼邏輯判斷,追加查詢(xún)條件;目前JAVA持久層主流框架Hibernate和Ibatis實(shí)現(xiàn)方式分析:[1].Hibatente

技術(shù)實(shí)現(xiàn):A.頁(yè)面追加查詢(xún)字段;

B.后臺(tái)代碼需加邏輯判斷,判斷字段是否為空,手工拼SQL追加查詢(xún)條件;[2].IBATIS

技術(shù)實(shí)現(xiàn):A.頁(yè)面追加查詢(xún)字段;

B.后臺(tái)不需寫(xiě)代碼,但是需在XML文件中追加該字段非空判斷和查詢(xún)條件;特點(diǎn):常規(guī)功能的頁(yè)面查詢(xún)方式只能是"全匹配"和"模糊查詢(xún)",對(duì)于特殊的

"包含查詢(xún)"和"不匹配查詢(xún)",

只能寫(xiě)特殊邏輯代碼5.2.

查詢(xún)條件SQL生成器5.2.1.

實(shí)現(xiàn)原理根據(jù)頁(yè)面?zhèn)鬟f到后臺(tái)的參數(shù),動(dòng)態(tài)判斷字段是否為空,自動(dòng)拼SQL追加查詢(xún)條件。實(shí)現(xiàn)的功能:實(shí)現(xiàn)了"模糊查詢(xún)"

,

"包含查詢(xún)"

,

"不匹配查詢(xún)"

等SQL匹配功能。特點(diǎn):頁(yè)面僅僅追加一個(gè)查詢(xún)字段,后臺(tái)不需要寫(xiě)任何代碼,查詢(xún)功能自動(dòng)實(shí)現(xiàn)。5.2.2.

查詢(xún)規(guī)則要求:頁(yè)面查詢(xún)字段,需跟后臺(tái)Action<或Controller>中Page的字段對(duì)應(yīng)一致,后臺(tái)不需寫(xiě)代碼自動(dòng)生成HQL,追加查詢(xún)條件;默認(rèn)生成的查詢(xún)條件是全匹配;

查詢(xún)匹配方式分類(lèi):[1].全匹配查詢(xún):查詢(xún)數(shù)據(jù)沒(méi)有特殊格式,默認(rèn)為全匹配查詢(xún)[2].模糊查詢(xún):

查詢(xún)數(shù)據(jù)格式需加星號(hào)[*]

例如:{MD*/*MD*/*M*D*}[3].包含查詢(xún):

查詢(xún)數(shù)據(jù)格式采用逗號(hào)分隔[,]

例如:{01,03}<含義:in<'01','03'>>[4].不匹配查詢(xún):查詢(xún)數(shù)據(jù)格式需要加嘆號(hào)前綴[!]

例如:{!123}<含義:不等于123>特殊說(shuō)明:查詢(xún)不為Null的方法=!null<大小寫(xiě)沒(méi)關(guān)系>;查詢(xún)不為空字符串的方法=!<只有一個(gè)嘆號(hào)>.[5].時(shí)間范圍范圍查詢(xún)jsp

頁(yè)面中使用的name:需要查詢(xún)的日期類(lèi)型字段名本身〔什么都不加,表示查詢(xún)時(shí)查詢(xún)等于該字段時(shí)間的數(shù)據(jù)begin:需要查詢(xún)的日期類(lèi)型字段名〔首字母大寫(xiě),表示查詢(xún)開(kāi)始時(shí)間

查詢(xún)時(shí)查詢(xún)大于等于開(kāi)始時(shí)間的數(shù)據(jù)end:

需要查詢(xún)的日期類(lèi)型字段名〔首字母大寫(xiě),表示查詢(xún)結(jié)束時(shí)間查詢(xún)時(shí)查詢(xún)小于等于結(jié)束時(shí)間的數(shù)據(jù)使用舉例:字段名稱(chēng)

private

Date

birthday查詢(xún)開(kāi)始時(shí)間

beginBirthday查詢(xún)結(jié)束時(shí)間

endBirthday5.2.3.

具體實(shí)現(xiàn)第一步:頁(yè)面實(shí)現(xiàn)說(shuō)明:為dategrid字段,追加屬性

query="true",自動(dòng)加載出查詢(xún)框,如圖

51所示。圖

51

JSP代碼實(shí)現(xiàn)第二步:controller層處理Controller中對(duì)應(yīng)的處理邏輯如圖

52所示。圖

52

Controller代碼6.

表單校驗(yàn)組件ValidForm6.1.

Validform使用入門(mén)1、引入css請(qǐng)查看下載文件中的style.css,把里面Validform必須部分復(fù)制到你的css中〔文件里這個(gè)注釋"/*==========以下部分是Validform必須的===========*/"

之后的部分是必須的。<之前發(fā)現(xiàn)有部分網(wǎng)友把整個(gè)style.css都引用在了頁(yè)面里,然后發(fā)現(xiàn)樣式?jīng)_突了>2、引入js

〔jquery

1.4.2

以上版本都可以3、給需要驗(yàn)證的表單元素綁定附加屬性4、初始化,就這么簡(jiǎn)單注:1、Validform有非壓縮、壓縮和NCR三個(gè)版本提供下載,NCR是通用版,當(dāng)你頁(yè)面因編碼問(wèn)題,提示文字出現(xiàn)亂碼時(shí)可以使用這個(gè)版本;2、Validform沒(méi)有限定必須使用table結(jié)構(gòu),它可以適用于任何結(jié)構(gòu),需要在tiptype中定義好位置關(guān)系。6.2.

綁定附加屬性凡要驗(yàn)證格式的元素均需綁定datatype屬性,datatype可選值內(nèi)置有10類(lèi),用來(lái)指定不同的驗(yàn)證格式。如果還不能滿足您的驗(yàn)證需求,可以傳入自定義datatype,自定義datatype是一個(gè)非常強(qiáng)大的功能,通過(guò)它可以滿足你的任何需求??梢越壎ǖ母郊訉傩杂校篸atatype、nullmsg、sucmsg、errormsg、ignore、recheck、tip、altercss、ajaxurl

plugin等。綁定方法如下所示:說(shuō)明:內(nèi)置基本的datatype類(lèi)型有:

*

|

*6-16

|

n

|

n6-16

|

s

|

s6-18

|

p

|

m

|

e

|

url*:檢測(cè)是否有輸入,可以輸入任何字符,不留空即可通過(guò)驗(yàn)證;*6-16:檢測(cè)是否為6到16位任意字符;n:數(shù)字類(lèi)型;n6-16:6到16位數(shù)字;s:字符串類(lèi)型;s6-18:6到18位字符串;p:驗(yàn)證是否為郵政編碼;m:手機(jī)號(hào)碼格式;e:email格式;url:驗(yàn)證字符串是否為網(wǎng)址。自定義datatype的名稱(chēng),可以由字母、數(shù)字、下劃線、中劃線和*號(hào)組成。形如"*6-16"的datatype,Validform會(huì)自動(dòng)擴(kuò)展,可以指定任意的數(shù)值范圍。如內(nèi)置基本類(lèi)型有"*6-16",那么你綁定datatype="*4-12"就表示4到12位任意字符。如果你自定義了一個(gè)datatype="zh2-4",表示2到4位中文字符,那么datatype="zh2-6"就表示2到6位中文字符。5.2版本之后,datatype支持規(guī)則累加或單選。用","分隔表示規(guī)則累加;用"|"分隔表示規(guī)則多選一,即只要符合其中一個(gè)規(guī)則就可以通過(guò)驗(yàn)證,綁定的規(guī)則會(huì)依次驗(yàn)證,只要驗(yàn)證通過(guò),后面的規(guī)則就會(huì)忽略不再比較。如綁定datatype="m|e",表示既可以填寫(xiě)手機(jī)號(hào)碼,也能填寫(xiě)郵箱地址,如果知道填入的是手機(jī)號(hào)碼,那么就不會(huì)再檢測(cè)他是不是郵箱地址;datatype="zh,s2-4",表示要符合自定義類(lèi)型"zh",也要符合規(guī)則"s2-4"。注:版本之后,datatype支持:直接綁定正則:如可用這樣寫(xiě)datatype="/\w{3,6}/i",要求是3到6位的字母,不區(qū)分大小寫(xiě);支持簡(jiǎn)單的邏輯運(yùn)算:如datatype="m

|

e,

*4-18

|

/\w{3,6}/i

|

/^validform\.rjboy\.cn$/",這個(gè)表達(dá)式的意思是:可以是手機(jī)號(hào)碼;或者是郵箱地址,但字符長(zhǎng)度必須在4到18位;或者是3到6位的字母,不區(qū)分大小寫(xiě);或者輸入,區(qū)分大小寫(xiě)。這里","分隔相當(dāng)于邏輯運(yùn)算里的"&&";"|"分隔相當(dāng)于邏輯運(yùn)算里的"||";不支持括號(hào)運(yùn)算。nullmsg當(dāng)表單元素值為空時(shí)的提示信息,不綁定,默認(rèn)提示"請(qǐng)?zhí)钊胄畔ⅲ?。如:nullmsg="請(qǐng)?zhí)顚?xiě)用戶名!"5.3版開(kāi)始,對(duì)于沒(méi)有綁定nullmsg的對(duì)象,會(huì)自動(dòng)查找class為Validform_label下的文字作為提示文字:如這樣的html結(jié)構(gòu):<span

class="Validform_label">*用戶名:</span><input

type="text"

val=""

datatype="s"

/>當(dāng)這個(gè)文本框里沒(méi)有輸入時(shí)的出錯(cuò)信息就會(huì)是:"請(qǐng)輸入用戶名!"這里Validform_label跟input之間的位置關(guān)系,不一定是要同級(jí)關(guān)系,同級(jí)里沒(méi)有找到的話,它還會(huì)在同級(jí)的子級(jí)、父級(jí)的同級(jí)、父級(jí)的同級(jí)的子級(jí)里查找。sucmsg

5.3+當(dāng)表單元素通過(guò)驗(yàn)證時(shí)的提示信息,不綁定,默認(rèn)提示"通過(guò)信息驗(yàn)證!"。如:sucmsg="用戶名還未被使用,可以注冊(cè)!"5.3版開(kāi)始,也可以在實(shí)時(shí)驗(yàn)證返回的json數(shù)據(jù)里返回成功的提示文字,請(qǐng)查看附加屬性ajaxurl的介紹。errormsg輸入內(nèi)容不能通過(guò)驗(yàn)證時(shí)的提示信息,默認(rèn)提示"請(qǐng)輸入正確信息!"。如:errormsg="用戶名必須是2到4位中文字符!"5.3版開(kāi)始,Validform可以根據(jù)你綁定的datatype智能的輸出相應(yīng)出錯(cuò)信息,具體介紹請(qǐng)查看tipmsgignore綁定了ignore="ignore"的表單元素,在有輸入時(shí),會(huì)驗(yàn)證所填數(shù)據(jù)是否符合datatype所指定數(shù)據(jù)類(lèi)型,沒(méi)有填寫(xiě)內(nèi)容時(shí)則會(huì)忽略對(duì)它的驗(yàn)證;recheck表單里面經(jīng)常需要檢查兩次密碼輸入是否一致,recheck就是用來(lái)指定需要比較的另外一個(gè)表單元素。

如:recheck="password1",那么它就會(huì)拿當(dāng)前元素的值跟該表單下,name為"password1"的元素比較。tip表單里經(jīng)常有些文本框需要默認(rèn)就顯示一個(gè)灰色的提示文字,當(dāng)獲得焦點(diǎn)時(shí)提示文字消失,失去焦點(diǎn)時(shí)提示文字顯示。tip屬性就是用來(lái)實(shí)現(xiàn)這個(gè)效果。它通常和altercss搭配使用。如<input

type="text"

value="默認(rèn)提示文字"

class="gray

intxt"

tip="默認(rèn)提示文字"

altercss="gray"

/>altercss它需要和tip屬性配合使用,altercss指定的樣式名,會(huì)在文本框獲得焦點(diǎn)時(shí)被刪除,沒(méi)有輸入內(nèi)容而失去焦點(diǎn)時(shí)重新加上。ajaxurl指定ajax實(shí)時(shí)驗(yàn)證的后臺(tái)文件的地址。后臺(tái)頁(yè)面如valid.php文件中可以用$_POST["param"]

接收到值,Ajax中會(huì)POST過(guò)來(lái)變量param和name。param是文本框的值,name是文本框的name屬性。5.2版本開(kāi)始,可以在ajaxurl指定的url后綁定參數(shù),如:ajaxurl="valid.php?myparam1=value1&myparam2=value2";5.3之前的版本中,該文件輸出的字符會(huì)作為錯(cuò)誤信息顯示在頁(yè)面上,如果驗(yàn)證通過(guò)需輸出小寫(xiě)字母"y"。在5.3版中,實(shí)時(shí)驗(yàn)證的返回?cái)?shù)據(jù)做了調(diào)整,須是含有status值的json數(shù)據(jù)!跟callback里的ajax返回?cái)?shù)據(jù)格式統(tǒng)一,建議不再返回字符串"y"或"n"。目前這兩種格式的數(shù)據(jù)都兼容。注:

如果ajax校驗(yàn)通過(guò),會(huì)在該元素上綁定validform_valid值為true??梢酝ㄟ^(guò)設(shè)置該值來(lái)控制驗(yàn)證能不能通過(guò),如驗(yàn)證碼的驗(yàn)證,第一次驗(yàn)證通過(guò)后,不小心右點(diǎn)擊了下驗(yàn)證碼圖片,驗(yàn)證碼換了,但是仍然指示這個(gè)對(duì)象已經(jīng)通過(guò)了驗(yàn)證,這時(shí)可以手動(dòng)調(diào)整該值:$<"#name">[0].validform_valid="false"。怎樣設(shè)置ajax的參數(shù),具體可以查看Validform對(duì)象的config方法。plugin指定需要使用的插件。5.3版開(kāi)始,對(duì)于日期、swfupload和密碼強(qiáng)度檢測(cè)這三個(gè)插件,綁定了plugin屬性即可以初始化對(duì)應(yīng)的插件,可以不用在validform初始化時(shí)傳入空的usePlugin了。如,你要使用日期插件,5.3之前版本需要這樣初始化:$<".demoform">.Validform<{

usePlugin:{

datepicker:{}

}}>;5.3版開(kāi)始,不需要傳入這些空對(duì)象了,只需在表單元素上綁定plugin="datepicker"就可以,初始化直接這樣:$<".demoform">.Validform<>;6.3.

初始化參數(shù)說(shuō)明所有可用的參數(shù)如下:

$<".demoform">.Validform<{

btnSubmit:"#btn_sub",

btnReset:".btn_reset",

tiptype:1,

ignoreHidden:false,

dragonfly:false,

tipSweep:true,

showAllError:false,

postonce:true,

ajaxPost:true,

datatype:{

"*6-20":

/^[^\s]{6,20}$/,

"z2-4"

:

/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/,

"username":function<gets,obj,curform,regxp>{

//參數(shù)gets是獲取到的表單元素值,obj為當(dāng)前表單元素,curform為當(dāng)前驗(yàn)證的表單,regxp為內(nèi)置的一些正則表達(dá)式的引用;

var

reg1=/^[\w\.]{4,16}$/,

reg2=/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,8}$/;

if<reg1.test<gets>>{return

true;}

if<reg2.test<gets>>{return

true;}

return

false;

//注意return可以返回true

false

字符串文字,true表示驗(yàn)證通過(guò),返回字符串表示驗(yàn)證失敗,字符串作為錯(cuò)誤提示顯示,返回false則用errmsg或默認(rèn)的錯(cuò)誤提示;

},

"phone":function<>{

//

5.0

版本之后,要實(shí)現(xiàn)二選一的驗(yàn)證效果,datatype

的名稱(chēng)

需要以

"option_"

開(kāi)頭;

}

},

usePlugin:{

swfupload:{},

datepicker:{},

passwordstrength:{},

jqtransform:{

selector:"select,input"

}

},

beforeCheck:function<curform>{

//在表單提交執(zhí)行驗(yàn)證之前執(zhí)行的函數(shù),curform參數(shù)是當(dāng)前表單對(duì)象。

//這里明確return

false的話將不會(huì)繼續(xù)執(zhí)行驗(yàn)證操作;

},

beforeSubmit:function<curform>{

//在驗(yàn)證成功后,表單提交前執(zhí)行的函數(shù),curform參數(shù)是當(dāng)前表單對(duì)象。

//這里明確return

false的話表單將不會(huì)提交;

},

callback:function<data>{

//返回?cái)?shù)據(jù)data是json格式,{"info":"demo

info","status":"y"}

//info:

輸出提示信息;

//status:

返回提交數(shù)據(jù)的狀態(tài),是否提交成功。如可以用"y"表示提交成功,"n"表示提交失敗,在ajax_post.php文件返回?cái)?shù)據(jù)里自定字符,主要用在callback函數(shù)里根據(jù)該值執(zhí)行相應(yīng)的回調(diào)操作;

//你也可以在ajax_post.php文件返回更多信息在這里獲取,進(jìn)行相應(yīng)操作;

//ajax遇到服務(wù)端錯(cuò)誤時(shí)也會(huì)執(zhí)行回調(diào),這時(shí)的data是{

status:**,

statusText:**,

readyState:**,

responseText:**

};

//這里執(zhí)行回調(diào)操作;

//注意:如果不是ajax方式提交表單,傳入callback,這時(shí)data參數(shù)是當(dāng)前表單對(duì)象,回調(diào)函數(shù)會(huì)在表單驗(yàn)證全部通過(guò)后執(zhí)行,然后判斷是否提交表單,如果callback里明確return

false,則表單不會(huì)提交,如果return

true或沒(méi)有return,則會(huì)提交表單。

}}>;參數(shù)說(shuō)明:[所有參數(shù)均為可選項(xiàng)]必須是表單對(duì)象執(zhí)行Validform方法,示例中".demoform"就是綁定在form元素上的class名稱(chēng);btnSubmit指定當(dāng)前表單下的哪一個(gè)按鈕觸發(fā)表單提交事件,如果表單下有submit按鈕時(shí)可以省略該參數(shù)。示例中".btn_sub"是該表單下要綁定點(diǎn)擊提交表單事件的按鈕;btnReset".btn_reset"是該表單下要綁定點(diǎn)擊重置表單事件的按鈕;tiptype可用的值有:1、2、3、4和function函數(shù),默認(rèn)tiptype為1。<

3、4是版本新增>1=>

自定義彈出框提示;2=>

側(cè)邊提示<會(huì)在當(dāng)前元素的父級(jí)的next對(duì)象的子級(jí)查找顯示提示信息的對(duì)象,表單以ajax提交時(shí)會(huì)彈出自定義提示框顯示表單提交狀態(tài)>;3=>

側(cè)邊提示<會(huì)在當(dāng)前元素的siblings對(duì)象中查找顯示提示信息的對(duì)象,表單以ajax提交時(shí)會(huì)彈出自定義提示框顯示表單提交狀態(tài)>;4=>

側(cè)邊提示<會(huì)在當(dāng)前元素的父級(jí)的next對(duì)象下查找顯示提示信息的對(duì)象,表單以ajax提交時(shí)不顯示表單的提交狀態(tài)>;如果上面的4種提示方式不是你需要的,你可以給tiptype傳入自定義函數(shù)。通過(guò)自定義函數(shù),可以實(shí)現(xiàn)你想要的任何提示效果:tiptype:function<msg,o,cssctl>{

//msg:提示信息;

//o:{obj:*,type:*,curform:*},

//obj指向的是當(dāng)前驗(yàn)證的表單元素〔或表單對(duì)象,驗(yàn)證全部驗(yàn)證通過(guò),提交表單時(shí)o.obj為該表單對(duì)象,//type指示提示的狀態(tài),值為1、2、3、4,1:正在檢測(cè)/提交數(shù)據(jù),2:通過(guò)驗(yàn)證,3:驗(yàn)證失敗,4:提示ignore狀態(tài),

//curform為當(dāng)前form對(duì)象;//cssctl:內(nèi)置的提示信息樣式控制函數(shù),該函數(shù)需傳入兩個(gè)參數(shù):顯示提示信息的對(duì)象和當(dāng)前提示的狀態(tài)〔既形參o中的type;}具體參見(jiàn)demo頁(yè)。tiptype不為1時(shí),Validform會(huì)查找class為"Validform_checktip"的標(biāo)簽顯示提示信息。tiptype=1時(shí),會(huì)自動(dòng)創(chuàng)建彈出框顯示提示信息。Validform_checktip和表單元素之間的位置關(guān)系,會(huì)根據(jù)tiptype的值有對(duì)應(yīng)的結(jié)構(gòu),上面已經(jīng)做了說(shuō)明。5.3版本開(kāi)始,如果頁(yè)面里沒(méi)有顯示出錯(cuò)信息的標(biāo)簽,會(huì)根據(jù)tiptype值自動(dòng)創(chuàng)建Validform_checktip對(duì)象。ignoreHidden可用值:

true

|

false。默認(rèn)為false,當(dāng)為true時(shí)對(duì):hidden的表單元素將不做驗(yàn)證;dragonfly可用值:

true

|

false。默認(rèn)false,當(dāng)為true時(shí),值為空時(shí)不做驗(yàn)證;tipSweep可用值:

true

|

false。默認(rèn)為false,5.3版中做了修正,在各種tiptype下,為true時(shí)提示信息將只會(huì)在表單提交時(shí)觸發(fā)顯示,各表單元素blur時(shí)不會(huì)觸發(fā)信息提示;showAllError可用值:

true

|

false。默認(rèn)為false,true:提交表單時(shí)所有錯(cuò)誤提示信息都會(huì)顯示;false:一碰到驗(yàn)證不通過(guò)的對(duì)象就會(huì)停止檢測(cè)后面的元素,只顯示該元素的錯(cuò)誤信息;postonce可用值:

true

|

false。默認(rèn)為false,指定是否開(kāi)啟二次提交防御,true開(kāi)啟,不指定則默認(rèn)關(guān)閉;為true時(shí),在數(shù)據(jù)成功提交后,表單將不能再繼續(xù)提交。ajaxPost可用值:

true

|

false。默認(rèn)為false,使用ajax方式提交表單數(shù)據(jù),將會(huì)把數(shù)據(jù)POST到config方法或表單action屬性里設(shè)定的地址;datatype傳入自定義datatype類(lèi)型,可以是正則,也可以是函數(shù)。datatyp:{

"zh2-4":/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/,

"phone":function<gets,obj,curform,regxp>{

//參數(shù)gets是獲取到的表單元素值,

//obj為當(dāng)前表單元素,

//curform為當(dāng)前驗(yàn)證的表單,

//regxp為內(nèi)置的一些正則表達(dá)式的引用。

//return

false表示驗(yàn)證出錯(cuò),沒(méi)有return或者return

true表示驗(yàn)證通過(guò)。

}}具體示例請(qǐng)參考demo頁(yè);usePlugin目前已整合swfupload、datepicker、passwordstrength和jqtransform四個(gè)插件,在這里傳入這些插件使用時(shí)需要傳入的參數(shù)。datepicker在Validform內(nèi)調(diào)用時(shí)另外擴(kuò)展了幾個(gè)比較實(shí)用的參數(shù),具體請(qǐng)參考demo頁(yè);beforeCheck<curform>在表單提交執(zhí)行驗(yàn)證之前執(zhí)行的函數(shù),curform參數(shù)獲取到的是當(dāng)前表單對(duì)象。

函數(shù)return

false的話將不會(huì)繼續(xù)執(zhí)行驗(yàn)證操作;beforeSubmit<curform>在表單驗(yàn)證通過(guò),提交表單數(shù)據(jù)之前執(zhí)行的函數(shù),data參數(shù)是當(dāng)前表單對(duì)象。

函數(shù)return

false的話表單將不會(huì)提交;callback在使用ajax提交表單數(shù)據(jù)時(shí),數(shù)據(jù)提交后的回調(diào)函數(shù)。返回?cái)?shù)據(jù)data是Json格式:

{"info":"demo

info","status":"y"}info:

輸出提示信息,status:

返回提交數(shù)據(jù)的狀態(tài),是否提交成功,"y"表示提交成功,"n"表示提交失敗,在ajax_post.php文件返回?cái)?shù)據(jù)里自定字符,主要用在callback函數(shù)里根據(jù)該值執(zhí)行相應(yīng)的回調(diào)操作。你也可以在ajax_post.php文件返回更多信息在這里獲取,進(jìn)行相應(yīng)操作;如果不是ajax方式提交表單,傳入callback,這時(shí)data參數(shù)是當(dāng)前表單對(duì)象,回調(diào)函數(shù)會(huì)在表單驗(yàn)證全部通過(guò)后執(zhí)行,然后判斷是否提交表單,如果callback里return

false,則表單不會(huì)提交,如果return

true或沒(méi)有return,則會(huì)提交表單。5.3版開(kāi)始,ajax遇到服務(wù)端錯(cuò)誤時(shí)也會(huì)執(zhí)行回調(diào),這時(shí)的data是{

status:**,

statusText:**,

readyState:**,

responseText:**

}6.4.

Validform對(duì)象[方法支持鏈?zhǔn)秸{(diào)用]如示例var

demo=$<".formsub">.Validform<>,那么demo對(duì)象會(huì)有以下屬性和方法可以調(diào)用:tipmsg[object]如:demo.tipmsg.s="error!

no

message

inputed.";通過(guò)該對(duì)象可以修改除

tit

以外的其他提示文字,這樣可以實(shí)現(xiàn)同一個(gè)頁(yè)面的不同表單使用不同的提示文字。具體可修改的提示文字$.Tipmsg={//默認(rèn)提示文字;

tit:"提示信息",

w:{

"*":"不能為空!",

"*6-16":"請(qǐng)?zhí)顚?xiě)6到16位任意字符!",

"n":"請(qǐng)?zhí)顚?xiě)數(shù)字!",

"n6-16":"請(qǐng)?zhí)顚?xiě)6到16位數(shù)字!",

"s":"不能輸入特殊字符!",

"s6-18":"請(qǐng)?zhí)顚?xiě)6到18位字符!",

"p":"請(qǐng)?zhí)顚?xiě)郵政編碼!",

"m":"請(qǐng)?zhí)顚?xiě)手機(jī)號(hào)碼!",

"e":"郵箱地址格式不對(duì)!",

"url":"請(qǐng)?zhí)顚?xiě)網(wǎng)址!"

},def:"請(qǐng)?zhí)顚?xiě)正確信息!",

undef:"datatype未定義!",

reck:"兩次輸入的內(nèi)容不一致!",

r:"通過(guò)信息驗(yàn)證!",

c:"正在檢測(cè)信息…",

s:"請(qǐng)?zhí)钊胄畔ⅲ?,

s_auto:"請(qǐng){填寫(xiě)}{0}!",

v:"所填信息沒(méi)有經(jīng)過(guò)驗(yàn)證,請(qǐng)稍后…",

p:"正在提交數(shù)據(jù)…"

};要修改tit〔彈出框的標(biāo)題文字的話,可以這樣:$.Tipmsg.tit="Message

Box",則彈出框的標(biāo)題文字會(huì)換成"Message

Box"。注:5.3+$.Tipmsg.w里,形如"*6-16"的提示文字,里面的數(shù)字是會(huì)被替換的。如綁定datatype="*2-18",那它默認(rèn)的出錯(cuò)信息就會(huì)是"請(qǐng)?zhí)顚?xiě)2到18位任意字符!",可以通過(guò)$.Tipmsg.w這個(gè)對(duì)象修改和擴(kuò)展默認(rèn)錯(cuò)誤信息,如果你已經(jīng)設(shè)置了"zh2-4"的提示信息是"2-4位中文",那么"zh2-8"出錯(cuò)的信息就自動(dòng)會(huì)是:"2-8位中文"。對(duì)于自定義的datatype,在擴(kuò)展默認(rèn)信息時(shí),注意錯(cuò)誤信息的名字要跟datatype名字一樣,如上面示例是:$.Tipmsg.w["zh2-4"]="2-4位中文"。對(duì)于多頁(yè)面或一個(gè)頁(yè)面多表單有相同datatype來(lái)說(shuō),在$.Tipmsg.w中擴(kuò)展默認(rèn)提示信息是個(gè)很好的選擇。目前只能通過(guò)$.Tipmsg.w擴(kuò)展,還不能使用Validform對(duì)象的tipmsg屬性來(lái)擴(kuò)展。$.Tipmsg.s_auto是用來(lái)指定在沒(méi)有綁定nullmsg,且指定了標(biāo)簽Validform_label時(shí)的默認(rèn)提示信息。"{0}"是會(huì)被找到的Validform_label里的文字替換掉的,"{填寫(xiě)}"里的文字在綁定了"recheck"屬性的表單元素上檢測(cè)時(shí)是會(huì)不顯示的。具體示例請(qǐng)參見(jiàn)demo頁(yè)。dataType[object]獲取內(nèi)置的一些正則:{

"match":/^<.+?><\d+>-<\d+>$/,

"*":/[\w\W]+/,

"*6-16":/^[\w\W]{6,16}$/,

"n":/^\d+$/,

"n6-16":/^\d{6,16}$/,

"s":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]+$/,

"s6-18":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]{6,18}$/,

"p":/^[0-9]{6}$/,

"m":/^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/,

"e":/^\w+<[-+.']\w+>*@\w+<[-.]\w+>*\.\w+<[-.]\w+>*$/,

"url":/^<\w+:\/\/>?\w+<\.\w+>+.*$/

}addRule<rule>[返回值:Validform]可以通過(guò)Validform對(duì)象的這個(gè)方法來(lái)給表單元素綁定驗(yàn)證規(guī)則,綁定驗(yàn)證類(lèi)型中列出的附加屬性都可以通過(guò)這個(gè)方法綁定。demo.addRule<[

{

ele:"#name",

datatype:"s6-18",

ajaxurl:"valid.php",

nullmsg:"請(qǐng)輸入昵稱(chēng)!",

errormsg:"昵稱(chēng)至少6個(gè)字符,最多18個(gè)字符!"

},

{

ele:"#userpassword",

datatype:"*6-16",

nullmsg:"請(qǐng)?jiān)O(shè)置密碼!",

errormsg:"密碼范圍在6~16位之間!"

},

{

ele:"#userpassword2",

datatype:"*",

recheck:"userpassword",

nullmsg:"請(qǐng)?jiān)佥斎胍淮蚊艽a!",

errormsg:"您兩次輸入的賬號(hào)密碼不一致!"

}

]>;其中ele是指定要綁定規(guī)則的對(duì)象,會(huì)在Validform對(duì)象下查找這些對(duì)象。eq<n>[返回值:Validform]獲取Validform對(duì)象的第n個(gè)元素。如你頁(yè)面上有多個(gè)form的class都是formsub,執(zhí)行上面的驗(yàn)證綁定,得到的demo對(duì)象就可以操作所有這些表單,如果你要對(duì)其中某個(gè)表單執(zhí)行某些操作,那么就可以使用這個(gè)方法。如demo.eq<0>.resetForm<>,重置第一個(gè)表單。ajaxPost<flag,sync,url>[返回值:Validform]以ajax方式提交表單。flag為true時(shí),跳過(guò)驗(yàn)證直接提交,sync為true時(shí)將以同步的方式進(jìn)行ajax提交。參數(shù)url是5.3版新增,傳入了url地址時(shí),表單會(huì)提交到這個(gè)地址如demo.ajaxPost<true>,不做驗(yàn)證直接ajax提交表單。abort<>[返回值:Validform]終止ajax的提交。如執(zhí)行上面的ajaxPost<>之后,發(fā)現(xiàn)某些項(xiàng)填寫(xiě)不對(duì),想取消表單提交,那么就可以執(zhí)行這個(gè)操作:demo.abort<>submitForm<flag,url>[返回值:Validform]以初始化時(shí)傳入?yún)?shù)的設(shè)置方式提交表單,flag為true時(shí),跳過(guò)驗(yàn)證直接提交。參數(shù)url是5.3版新增,傳入了url地址時(shí),表單會(huì)提交到這個(gè)地址如demo.submitForm<true>,不做驗(yàn)證直接提交表單。resetForm<>[返回值:Validform]重置表單。如demo.resetForm<>,重置表單到初始狀態(tài)。resetStatus<>[返回值:Validform]重置表單的提交狀態(tài)。傳入了postonce參數(shù)的話,表單成功提交后狀態(tài)會(huì)設(shè)置為"posted",重置提交狀態(tài)可以讓表單繼續(xù)可以提交。如demo.resetStatus<>getStatus<>[返回值:String]獲取表單的提交狀態(tài),normal:未提交,posting:正在提交,posted:已成功提交過(guò)。如demo.getStatus<>setStatus<status>[返回值:Validform]設(shè)置表單的提交狀態(tài),可以設(shè)置normal,posting,posted三種狀態(tài),不傳參則設(shè)置狀態(tài)為posting,這個(gè)狀態(tài)表單可以驗(yàn)證,但不能提交。如demo.setStatus<"posted">ignore<selector>[返回值:Validform]忽略對(duì)所選擇對(duì)象的驗(yàn)證,不傳入selector則忽略所有表單元素。如demo.ignore<"select,textarea,#name">,忽略Validform對(duì)象下所有select,textarea及一個(gè)id為"name"元素的驗(yàn)證。unignore<selector>[返回值:Validform]將ignore方法所忽略驗(yàn)證的對(duì)象重新獲取驗(yàn)證效果,不傳入selector則恢復(fù)驗(yàn)證所有表單元素。如demo.unignore<"select,textarea,#name">,恢復(fù)Validform對(duì)象下所有select,textarea及一個(gè)id為"name"元素的驗(yàn)證。check<bool,selector>[返回值:Boolean]bool為true時(shí)則只驗(yàn)證不顯示提示信息對(duì)指定對(duì)象進(jìn)行驗(yàn)證<默認(rèn)驗(yàn)證當(dāng)前整個(gè)表單>,通過(guò)返回true,否則返回false〔綁定實(shí)時(shí)驗(yàn)證的對(duì)象,格式符合要求時(shí)返回true,而不會(huì)等ajax的返回結(jié)果如demo.check<>,驗(yàn)證當(dāng)前整個(gè)表單,且只驗(yàn)證但不顯示對(duì)錯(cuò)信息。config<setup>

5.3+

[返回值:Validform]setup參數(shù)是一個(gè)對(duì)象。如:demo.config<{

url:"這里指定提交地址",

ajaxpost:{

//可以傳入$.ajax<>能使用的,除dataType外的所有參數(shù);

},

ajaxurl:{

//可以傳入$.ajax<>能使用的,除dataType外的所有參數(shù);

}

}>可用參數(shù):url:指定表單的提交路徑,這里指定的路徑會(huì)覆蓋表單action屬性所指定的路徑ajaxpost:表單以ajax提交時(shí),可以在這里配置ajax的參數(shù)ajaxurl:配置實(shí)時(shí)驗(yàn)證ajax的參數(shù)<1>

執(zhí)行config可以動(dòng)態(tài)設(shè)置、添加參數(shù),如:demo.config<{

url:""

}>;

$<".save">.click<function<>{

demo.config<{

ajaxpost:{

timeout:1000

}

}>;

}>;那么在點(diǎn)擊save按鈕后,demo所對(duì)應(yīng)的表單的配置為:config={

url:"",

ajaxpost:{

timeout:1000

}

}<2>

參數(shù)url的優(yōu)先級(jí):form表單的action所指定的提交地址會(huì)被config.url覆蓋,config.url會(huì)被覆蓋,會(huì)被Validform對(duì)象的方法submitForm<flag,url>和ajaxPost<flag,sync,url>里的url覆蓋。如果表單里沒(méi)有指定action提交地址,那么就會(huì)提交到config.url設(shè)定的地址。<3>

考慮到整個(gè)驗(yàn)證框架的邏輯,傳入dataType參數(shù)不會(huì)起作用,不會(huì)被覆蓋,ajax必須返回含有status值的json數(shù)據(jù)。另外注意的是:傳入的success和error方法里,能多獲取到一個(gè)參數(shù),如:demo.config={

ajaxpost:{

url:"",

timeout:1000,

...,

success:function<data,obj>{

//data是返回的json數(shù)據(jù);

//obj是當(dāng)前表單的jquery對(duì)象;

},

error:function<data,obj>{

//data是{

status:**,

statusText:**,

readyState:**,

responseText:**

};

//obj是當(dāng)前表單的jquery對(duì)象;

}

},

ajaxurl:{

success:function<data,obj>{

//data是返回的json數(shù)據(jù);

//obj是當(dāng)前正做實(shí)時(shí)驗(yàn)證表單元素的jquery對(duì)象;

//注意:5.3版中,實(shí)時(shí)驗(yàn)證的返回?cái)?shù)據(jù)須是含有status值的json數(shù)據(jù)!

//跟callback里的ajax返回?cái)?shù)據(jù)格式統(tǒng)一,建議不再返回字符串"y"或"n"。目前這兩種格式的數(shù)據(jù)都兼容。

}

}

}6.5.

調(diào)用外部插件文件上傳

-swfupload選擇文件后立即上傳表單驗(yàn)證通過(guò)后上傳文件密碼強(qiáng)度檢測(cè)

-passwordStrength密碼強(qiáng)度提示與驗(yàn)證提示同時(shí)顯示在符合驗(yàn)證要求時(shí)才有密碼強(qiáng)度提示日期控件

-datePicker默認(rèn)效果選擇日期后執(zhí)行回調(diào)函數(shù)表單美化

-jqtransform默認(rèn)對(duì)所有元素美化美化指定的表單元素6.6.

Validform的公用對(duì)象$.Datatype可以通過(guò)$.Datatype對(duì)象來(lái)擴(kuò)展datatype類(lèi)型。如$.Datatype.zh=/^[\u4E00-\u9FA5\uf900-\ufa2d]{1,}$/$.Tipmsg可以通過(guò)$.Tipmsg對(duì)象來(lái)修改默認(rèn)提示文字。具體可修改的提示文字請(qǐng)查看Validform對(duì)象的tipmsg屬性。如果Validform對(duì)象的tipmsg屬性沒(méi)有找到相關(guān)的提示信息,那么就會(huì)到$.Tipmsg中查找對(duì)應(yīng)提示文字。如$.Tipmsg.tit="msg

box";

//設(shè)置默認(rèn)彈出框的標(biāo)題文字。$.Showmsg<msg>調(diào)用Validform自定義的彈出框。參數(shù)msg是要顯示的提示文字。如$.Showmsg<"這是提示文字">;

//如果不傳入信息則不會(huì)有彈出框出現(xiàn),像$.Showmsg<>這樣是不會(huì)彈出提示框的。$.Hidemsg<>關(guān)閉Validform自定義的彈出框。如$.Hidemsg<>7.

基礎(chǔ)用戶權(quán)限7.1.

權(quán)限設(shè)計(jì)基本概念權(quán)限管理模塊涉及到的實(shí)體有:用戶、角色和系統(tǒng)資源<包括系統(tǒng)菜單、頁(yè)面按鈕等>。用戶可以擁有多個(gè)角色,角色可以被分配給多個(gè)用戶。而權(quán)限的意思就是對(duì)某個(gè)資源的某個(gè)操作.一般通用的權(quán)限管理模塊規(guī)定:所謂資源即應(yīng)用系統(tǒng)中提供的要進(jìn)行鑒權(quán)才能訪問(wèn)的資源<比如各類(lèi)數(shù)據(jù),系統(tǒng)菜單>;所謂操作即增加、修改、刪除、查詢(xún)等操作。權(quán)限模型用戶權(quán)限模型,指的是用來(lái)表達(dá)用戶信息及用戶權(quán)限信息的數(shù)據(jù)模型。即能證明"你是誰(shuí)?"、"你能訪問(wèn)哪些受保護(hù)資源?"。

用戶與角色之間構(gòu)成多對(duì)多關(guān)系。表示同一個(gè)用戶可以擁有多個(gè)角色,一個(gè)角色可以被多個(gè)用戶所擁有。角色與資源之間構(gòu)成多對(duì)多關(guān)系。表示同一個(gè)資源可以被多個(gè)角色訪問(wèn),一個(gè)角色可以訪問(wèn)多個(gè)資源。權(quán)限設(shè)計(jì)模型如圖

71所示。圖

71

權(quán)限設(shè)計(jì)模型7.2.

權(quán)限設(shè)計(jì)目標(biāo)權(quán)限設(shè)計(jì)及權(quán)限管理的目標(biāo)包括:1>

對(duì)用戶授予相應(yīng)的角色2>

對(duì)角色授予不同的菜單3>

對(duì)角色授予不同的操作按鈕權(quán)限4>

進(jìn)行數(shù)據(jù)級(jí)別的權(quán)限控制〔行級(jí)別、列級(jí)別

目前已經(jīng)實(shí)現(xiàn)前兩項(xiàng)的權(quán)限設(shè)計(jì)目標(biāo),后兩項(xiàng)的權(quán)限控制正在開(kāi)發(fā)中。7.3.

目前系統(tǒng)設(shè)計(jì)7.3.1.

數(shù)據(jù)表t_s_user[用戶權(quán)限]系統(tǒng)用戶表t_s_base_user[用戶權(quán)限]系統(tǒng)用戶父類(lèi)表t_s_role[用戶權(quán)限]角色t_s_role_user[用戶權(quán)限]用戶角色t_s_depart[用戶權(quán)限]部門(mén)機(jī)構(gòu)表t_s_role_function[用戶權(quán)限]角色權(quán)限表t_s_operation[用戶權(quán)限]操作權(quán)限表t_s_function[用戶權(quán)限]菜單權(quán)限表7.3.2.

頁(yè)面菜單權(quán)限管理的相關(guān)菜單如圖

72所示。圖

72

權(quán)限菜單8.

JEECG

注意規(guī)則1.

列表頁(yè)面,datagrid的name屬性不允許存在重復(fù)的,否則頁(yè)面顯示白板:<t:dategrid

name="jeecgDemoList"

title="開(kāi)發(fā)DEMO列表"

actionUrl="jeecgDemoController.do?datagrid"

idField="id"

fit="true">

2.

表單驗(yàn)證采用Validform

3.

時(shí)間控件采用my97,不要使用easyui的時(shí)間控件,因?yàn)榧虞d效率慢4.

上傳文件使用規(guī)則5.

流程配置表單后,業(yè)務(wù)申請(qǐng)必須重新創(chuàng)建6.

jsp代碼注釋規(guī)范,采用隱式注釋不能用顯式注釋,不然標(biāo)簽還是能讀到:隱式注釋?zhuān)?lt;%--

--%>

顯式注釋?zhuān)?lt;!--

-->

7.

表單布局兩種風(fēng)格:1.table

2.div

1.table

例如:jeecg/demo/jeecgDemo/jeecgDemo.jsp

2.div

例如:webpage/system/role/role.jsp

8.

postgres

數(shù)據(jù)庫(kù)建表規(guī)范字段名字大小寫(xiě)有區(qū)別,請(qǐng)注意9.

菜單采用frame方式打開(kāi)方法dataSourceController.do?goDruid&isIframe

10.

頁(yè)面組件ID命名規(guī)范[1].dategrid組件name<t:dategrid

name="userMe"

[2].組合查詢(xún)DIV<div

id="userMetb"[3].查詢(xún)按鈕對(duì)應(yīng)的js方法<a

href="#"

class="easyui-linkbutton"

iconCls="icon-search"

onclick="userMesearch<>">查詢(xún)</a>9.

項(xiàng)目編碼規(guī)范9.1.

項(xiàng)目編碼規(guī)范1.

項(xiàng)目編碼格式為UTF-8<包括:java,jsp,css,js>2.

sevice接口命名:*ServiceIservice實(shí)現(xiàn)命名:*ServiceImplentity命名:*Entitypage頁(yè)面form命名:*Pageaction命名:*Controller項(xiàng)目沒(méi)有DAO,

SQL寫(xiě)在Service層代碼層次目錄按照自動(dòng)生成目錄3.

SQL文件目錄和命名規(guī)范<1>.所有SQL必須大寫(xiě),不允許用*,全部替換為字段<2>.SQL文件根目錄為:sql

跟接口目錄Service是一個(gè)目錄;

例如:src

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論