昨天把表單定義的映射文件做完了,今天依然是相當(dāng)重要的,做的是單向表單實(shí)例映射,首先表單實(shí)例映射文件。
難點(diǎn)1是map的配置:
<map
name="propertyMap"
table="itcast_formInstance_propertyMap">
<key
column="formInstanceId"></key>
<map-key
type="string"
column="name"></map-key>
<element
type="serializable"
column="value"></element>
</map>
為什么要實(shí)現(xiàn)serializable,所有的數(shù)據(jù)都是以二進(jìn)制形式存在,所有的對(duì)象理論上都可以序列化,但是有些對(duì)象序列
化后會(huì)產(chǎn)生比如邏輯等等問題。在這里我們希望服務(wù)器重啟后,仍然保存有我想要的對(duì)象,也就是可以把原來的對(duì)象拿出來!就要實(shí)現(xiàn)序列化 ,同學(xué)的序列化解釋:
我們有時(shí)候?qū)⒁粋€(gè)java對(duì)象變成字節(jié)流的形式傳出去或者從一個(gè)字節(jié)流中恢復(fù)成一個(gè)java對(duì)象,例如,要將java對(duì)象存儲(chǔ)到硬盤或者傳送給網(wǎng)絡(luò)上
的其他計(jì)算機(jī),這個(gè)過程我們可以自己寫代碼去把一個(gè)java對(duì)象變成某個(gè)格式的字節(jié)流再傳
輸,但是,jre本身就提供了這種支持,我們可以調(diào)用OutputStream的writeObject方法來做,如果要讓java幫我們做,要傳輸?shù)膶?duì)象必須實(shí)現(xiàn)serializable接口,這樣,javac編譯時(shí)就會(huì)特殊處理。
2是定義FormDefinitionActionForm。由于表單字段可以增加,如圖:
我們用兩個(gè)數(shù)組存放
private String
propertyNameList = {};
private Class[] propertyValueTypeList
= {};
3.那我們就在FormDefinitionAction中
可以這樣處理:
//
actionForm
--> formDefinition
//
1,
copy properties
BeanUtils.copyProperties(formDefinition,
actionForm);
//
2,
fieldDefinitionList
for
(int
i = 0; i < actionForm.getPropertyNameList().length; i++) {
String
name = actionForm.getPropertyNameList()[i];
if
(name != null && name.trim().length() > 0) { // 有效的字段說明
Class
valueType = actionForm.getPropertyValueTypeList()[i];
formDefinition.getFieldDefinitionList().put(name,
valueType);
}
}
//
Save
formDefinitionService.save(formDefinition);
return
mapping.findForward("toList");)
小難點(diǎn)3.要把不同的表單定義名稱顯示到頁面
用Sql語句:select distinct
pd.name ProcessDefinition的全類名pd
小難點(diǎn)4.頁面設(shè)計(jì)
難點(diǎn)5.審批信息內(nèi)容:誰 在 什么時(shí)間
對(duì)哪個(gè)表單 做了什么樣的審批
難點(diǎn)6.整個(gè)實(shí)體類圖及關(guān)聯(lián)
最重要的還是下圖的關(guān)系:要理解好
總之,今天下午聽的暈乎暈乎的,趁過年還得好好復(fù)習(xí)一下!
posted on 2010-02-09 00:12
d66380022 閱讀(123)
評(píng)論(0) 編輯 收藏