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

下載本文檔

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

文檔簡介

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

前言1.1.

技術(shù)背景隨著WEB

UI

框架<EasyUI/Jquery

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

平臺介紹JEECG

[J2EE

Code

Generation]

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

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

JEECG宗旨:簡單功能由代碼生成器生成使用;

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

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

JEECG

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

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

1.代碼生成器

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

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

4.系統(tǒng)日志記錄。·

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

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

UI快速開發(fā)庫:針對WEB

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

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

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

JEECG

V3.0,經(jīng)過了專業(yè)壓力測試,性能測試,保證后臺數(shù)據(jù)的準確性和頁面訪問速度·

支持多種瀏覽器:

IE,

火狐,

Google

等瀏覽器訪問速度都很快·

支持數(shù)據(jù)庫:

Mysql,Oracle10g等·

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

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

智能報表集成:

簡易的圖像報表工具和Excel導入導出·

Web容器測試通過的有Jetty和Tomcat6·

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

要求JDK1.6+1.3.

平臺優(yōu)勢ü

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

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

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

查詢SQL過濾器,后臺不需要寫代碼,頁面追加查詢字段,查詢功能自動實現(xiàn)ü

頁面校驗自動生成<必須輸入、數(shù)字校驗、金額校驗、時間控件等>;ü

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

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

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

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

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

Spring

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

JDBC+Highcharts圖形報表+Jquery+Ehcache。設(shè)計思想:

零配置〔

約定大于配置各技術(shù)點說明[1]

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

頁面字段校驗自動生成〔數(shù)字類型\必須項\金額類型\時間控件\郵箱\手機號\QQ號等等>;

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

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

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

郵件發(fā)送/

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

jdbc

組合使用Hibernate+Spring

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

SQL設(shè)計方案:DB

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

<2>

程序自動讀取SQL;<3>

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

JEECG框架初探2.1.

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

21所示的登錄界面。圖

2-1

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

22所示。圖

2-2

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

2-3和圖

2-4所示。圖

2-3

用戶管理界面圖

24

流程設(shè)計器2.2.

示例代碼用戶管理中的用戶列表和用戶維護所用的jsp頁面代碼分別如圖

25和圖

26所示。圖

25

列表頁面代碼圖

26

用戶管理頁面代碼3.

JEECG

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

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

SE

6版本,目前最新的Java

SE

6

SDK版本為Update

43,如圖

31所示。圖

31

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

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

項目導入開發(fā)環(huán)境將下載到的源代碼解壓到本地磁盤,通過eclipse的Import->Existing

Projects

into

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

32所示。圖

32

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

Facets,選擇Convert

to

faceted

from…,如圖

33所示。圖

33

為工程添加WTP項目支持在打開的界面中,勾選"Dynamic

Web

Module"和"Java",分別選擇其Version為2.5和1.6,并為項目添加Tomcat的運行時支持,如圖

34所示。圖

34

Project

Facets及運行時選擇選擇完P(guān)roject

Facets之后,點擊界面下方的"Futher

configuration

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

directory的值為"WebRoot",并將Generate

web.xml

deployment

descriptor前面的復選框取消勾選,并為"Content

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

35所示。圖

35

Web

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

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

-proot

-uroot

jeecg

<

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

/

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

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

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

36

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

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

37所示。圖

37

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

properties,如圖

38所示。圖

38

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

項目啟動測試配置完成之后,啟動Tomcat,在瀏覽器地址欄中輸入http://localhost:8080/jeecg/,打開的界面如圖

39所示。圖

39

項目登錄頁面輸入用戶名密碼admin/123456,登陸進入主界面,如圖

310所示。圖

310

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

代碼生成器本章通過一個實際的示例來講解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)建時間',

PRIMARY

KEY

<`ID`>>

ENGINE=InnoDB

DEFAULT

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

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

41所示:表

41

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

floders

on

build

path

<JAVA文件的根目錄>src

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

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

銷售模塊目錄特點:支持多級目錄例如[com.sys]Demo

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

system_encoding項目編碼utf-8

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

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

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

41所示。圖

41

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

42所示。圖

42

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

43所示。圖

43

生成的JSP文件

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

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

功能測試4.4.1.

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

44所示。圖

44

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

45所示。圖

45

新增的員工管理菜單項4.4.2.

功能測試點擊菜單項[員工管理],打開員工管理的主界面如圖

46所示。圖

46

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

47所示。圖

47

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

48所示。圖

48

信息被正確保存入庫4.5.

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

建表規(guī)范1.

表必須有唯一主鍵:

ID〔字符類型

32位

備注:

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

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

表字段必須有注釋備注:

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

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

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

42來創(chuàng)建新表,模板表中原有的字段,生成器會過濾不在頁面生成。表

42

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

CREATE_BYvarchar36創(chuàng)建人

CREATE_NAMEvarchar32創(chuàng)建人名字

CREATE_DATEdatetime0創(chuàng)建時間

UPDATE_BYvarchar36修改人

UPDATE_NAMEvarchar32修改人名字

UPDATE_DATEdatetime0修改時間

DELFLAGint2刪除標記

DEL_DATEdatetime0刪除時間

4.5.2.

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

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

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

查詢HQL過濾器5.1.

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

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

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

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

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

"包含查詢"和"不匹配查詢",

只能寫特殊邏輯代碼5.2.

查詢條件SQL生成器5.2.1.

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

,

"包含查詢"

,

"不匹配查詢"

等SQL匹配功能。特點:頁面僅僅追加一個查詢字段,后臺不需要寫任何代碼,查詢功能自動實現(xiàn)。5.2.2.

查詢規(guī)則要求:頁面查詢字段,需跟后臺Action<或Controller>中Page的字段對應(yīng)一致,后臺不需寫代碼自動生成HQL,追加查詢條件;默認生成的查詢條件是全匹配;

查詢匹配方式分類:[1].全匹配查詢:查詢數(shù)據(jù)沒有特殊格式,默認為全匹配查詢[2].模糊查詢:

查詢數(shù)據(jù)格式需加星號[*]

例如:{MD*/*MD*/*M*D*}[3].包含查詢:

查詢數(shù)據(jù)格式采用逗號分隔[,]

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

例如:{!123}<含義:不等于123>特殊說明:查詢不為Null的方法=!null<大小寫沒關(guān)系>;查詢不為空字符串的方法=!<只有一個嘆號>.[5].時間范圍范圍查詢jsp

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

查詢時查詢大于等于開始時間的數(shù)據(jù)end:

需要查詢的日期類型字段名〔首字母大寫,表示查詢結(jié)束時間查詢時查詢小于等于結(jié)束時間的數(shù)據(jù)使用舉例:字段名稱

private

Date

birthday查詢開始時間

beginBirthday查詢結(jié)束時間

endBirthday5.2.3.

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

query="true",自動加載出查詢框,如圖

51所示。圖

51

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

52所示。圖

52

Controller代碼6.

表單校驗組件ValidForm6.1.

Validform使用入門1、引入css請查看下載文件中的style.css,把里面Validform必須部分復制到你的css中〔文件里這個注釋"/*==========以下部分是Validform必須的===========*/"

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

〔jquery

1.4.2

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

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

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

*

|

*6-16

|

n

|

n6-16

|

s

|

s6-18

|

p

|

m

|

e

|

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

|

e,

*4-18

|

/\w{3,6}/i

|

/^validform\.rjboy\.cn$/",這個表達式的意思是:可以是手機號碼;或者是郵箱地址,但字符長度必須在4到18位;或者是3到6位的字母,不區(qū)分大小寫;或者輸入,區(qū)分大小寫。這里","分隔相當于邏輯運算里的"&&";"|"分隔相當于邏輯運算里的"||";不支持括號運算。nullmsg當表單元素值為空時的提示信息,不綁定,默認提示"請?zhí)钊胄畔ⅲ?。如:nullmsg="請?zhí)顚懹脩裘?5.3版開始,對于沒有綁定nullmsg的對象,會自動查找class為Validform_label下的文字作為提示文字:如這樣的html結(jié)構(gòu):<span

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

type="text"

val=""

datatype="s"

/>當這個文本框里沒有輸入時的出錯信息就會是:"請輸入用戶名!"這里Validform_label跟input之間的位置關(guān)系,不一定是要同級關(guān)系,同級里沒有找到的話,它還會在同級的子級、父級的同級、父級的同級的子級里查找。sucmsg

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

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

type="text"

value="默認提示文字"

class="gray

intxt"

tip="默認提示文字"

altercss="gray"

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

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

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

usePlugin:{

datepicker:{}

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

初始化參數(shù)說明所有可用的參數(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為當前表單元素,curform為當前驗證的表單,regxp為內(nèi)置的一些正則表達式的引用;

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表示驗證通過,返回字符串表示驗證失敗,字符串作為錯誤提示顯示,返回false則用errmsg或默認的錯誤提示;

},

"phone":function<>{

//

5.0

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

的名稱

需要以

"option_"

開頭;

}

},

usePlugin:{

swfupload:{},

datepicker:{},

passwordstrength:{},

jqtransform:{

selector:"select,input"

}

},

beforeCheck:function<curform>{

//在表單提交執(zhí)行驗證之前執(zhí)行的函數(shù),curform參數(shù)是當前表單對象。

//這里明確return

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

},

beforeSubmit:function<curform>{

//在驗證成功后,表單提交前執(zhí)行的函數(shù),curform參數(shù)是當前表單對象。

//這里明確return

false的話表單將不會提交;

},

callback:function<data>{

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

info","status":"y"}

//info:

輸出提示信息;

//status:

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

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

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

status:**,

statusText:**,

readyState:**,

responseText:**

};

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

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

false,則表單不會提交,如果return

true或沒有return,則會提交表單。

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

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

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

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

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

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

//msg:提示信息;

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

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

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

true

|

false。默認為false,當為true時對:hidden的表單元素將不做驗證;dragonfly可用值:

true

|

false。默認false,當為true時,值為空時不做驗證;tipSweep可用值:

true

|

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

true

|

false。默認為false,true:提交表單時所有錯誤提示信息都會顯示;false:一碰到驗證不通過的對象就會停止檢測后面的元素,只顯示該元素的錯誤信息;postonce可用值:

true

|

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

true

|

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

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

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

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

//obj為當前表單元素,

//curform為當前驗證的表單,

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

//return

false表示驗證出錯,沒有return或者return

true表示驗證通過。

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

函數(shù)return

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

函數(shù)return

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

{"info":"demo

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

輸出提示信息,status:

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

false,則表單不會提交,如果return

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

status:**,

statusText:**,

readyState:**,

responseText:**

}6.4.

Validform對象[方法支持鏈式調(diào)用]如示例var

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

no

message

inputed.";通過該對象可以修改除

tit

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

tit:"提示信息",

w:{

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

"*6-16":"請?zhí)顚?到16位任意字符!",

"n":"請?zhí)顚憯?shù)字!",

"n6-16":"請?zhí)顚?到16位數(shù)字!",

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

"s6-18":"請?zhí)顚?到18位字符!",

"p":"請?zhí)顚戉]政編碼!",

"m":"請?zhí)顚懯謾C號碼!",

"e":"郵箱地址格式不對!",

"url":"請?zhí)顚懢W(wǎng)址!"

},def:"請?zhí)顚懻_信息!",

undef:"datatype未定義!",

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

r:"通過信息驗證!",

c:"正在檢測信息…",

s:"請?zhí)钊胄畔ⅲ?,

s_auto:"請{填寫}{0}!",

v:"所填信息沒有經(jīng)過驗證,請稍后…",

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

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

Box",則彈出框的標題文字會換成"Message

Box"。注:5.3+$.Tipmsg.w里,形如"*6-16"的提示文字,里面的數(shù)字是會被替換的。如綁定datatype="*2-18",那它默認的出錯信息就會是"請?zhí)顚?到18位任意字符!",可以通過$.Tipmsg.w這個對象修改和擴展默認錯誤信息,如果你已經(jīng)設(shè)置了"zh2-4"的提示信息是"2-4位中文",那么"zh2-8"出錯的信息就自動會是:"2-8位中文"。對于自定義的datatype,在擴展默認信息時,注意錯誤信息的名字要跟datatype名字一樣,如上面示例是:$.Tipmsg.w["zh2-4"]="2-4位中文"。對于多頁面或一個頁面多表單有相同datatype來說,在$.Tipmsg.w中擴展默認提示信息是個很好的選擇。目前只能通過$.Tipmsg.w擴展,還不能使用Validform對象的tipmsg屬性來擴展。$.Tipmsg.s_auto是用來指定在沒有綁定nullmsg,且指定了標簽Validform_label時的默認提示信息。"{0}"是會被找到的Validform_label里的文字替換掉的,"{填寫}"里的文字在綁定了"recheck"屬性的表單元素上檢測時是會不顯示的。具體示例請參見demo頁。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]可以通過Validform對象的這個方法來給表單元素綁定驗證規(guī)則,綁定驗證類型中列出的附加屬性都可以通過這個方法綁定。demo.addRule<[

{

ele:"#name",

datatype:"s6-18",

ajaxurl:"valid.php",

nullmsg:"請輸入昵稱!",

errormsg:"昵稱至少6個字符,最多18個字符!"

},

{

ele:"#userpassword",

datatype:"*6-16",

nullmsg:"請設(shè)置密碼!",

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

},

{

ele:"#userpassword2",

datatype:"*",

recheck:"userpassword",

nullmsg:"請再輸入一次密碼!",

errormsg:"您兩次輸入的賬號密碼不一致!"

}

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

5.3+

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

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

ajaxpost:{

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

},

ajaxurl:{

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

}

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

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

url:""

}>;

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

demo.config<{

ajaxpost:{

timeout:1000

}

}>;

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

url:"",

ajaxpost:{

timeout:1000

}

}<2>

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

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

ajaxpost:{

url:"",

timeout:1000,

...,

success:function<data,obj>{

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

//obj是當前表單的jquery對象;

},

error:function<data,obj>{

//data是{

status:**,

statusText:**,

readyState:**,

responseText:**

};

//obj是當前表單的jquery對象;

}

},

ajaxurl:{

success:function<data,obj>{

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

//obj是當前正做實時驗證表單元素的jquery對象;

//注意:5.3版中,實時驗證的返回數(shù)據(jù)須是含有status值的json數(shù)據(jù)!

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

}

}

}6.5.

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

-swfupload選擇文件后立即上傳表單驗證通過后上傳文件密碼強度檢測

-passwordStrength密碼強度提示與驗證提示同時顯示在符合驗證要求時才有密碼強度提示日期控件

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

-jqtransform默認對所有元素美化美化指定的表單元素6.6.

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

box";

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

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

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

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

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

71所示。圖

71

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

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

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

對角色授予不同的菜單3>

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

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

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

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

數(shù)據(jù)表t_s_user[用戶權(quán)限]系統(tǒng)用戶表t_s_base_user[用戶權(quán)限]系統(tǒng)用戶父類表t_s_role[用戶權(quán)限]角色t_s_role_user[用戶權(quán)限]用戶角色t_s_depart[用戶權(quán)限]部門機構(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.

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

72所示。圖

72

權(quán)限菜單8.

JEECG

注意規(guī)則1.

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

name="jeecgDemoList"

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

actionUrl="jeecgDemoController.do?datagrid"

idField="id"

fit="true">

2.

表單驗證采用Validform

3.

時間控件采用my97,不要使用easyui的時間控件,因為加載效率慢4.

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

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

jsp代碼注釋規(guī)范,采用隱式注釋不能用顯式注釋,不然標簽還是能讀到:隱式注釋:<%--

--%>

顯式注釋:<!--

-->

7.

表單布局兩種風格:1.table

2.div

1.table

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

2.div

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

8.

postgres

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

菜單采用frame方式打開方法dataSourceController.do?goDruid&isIframe

10.

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

name="userMe"

[2].組合查詢DIV<div

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

href="#"

class="easyui-linkbutton"

iconCls="icon-search"

onclick="userMesearch<>">查詢</a>9.

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

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

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

sevice接口命名:*ServiceIservice實現(xiàn)命名:*ServiceImplentity命名:*Entitypage頁面form命名:*Pageaction命名:*Controller項目沒有DAO,

SQL寫在Service層代碼層次目錄按照自動生成目錄3.

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

跟接口目錄Service是一個目錄;

例如:src

溫馨提示

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

最新文檔

評論

0/150

提交評論