FormBean到底是什麼。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
我們在Struts FrameWork裡我們在配置config的時候要配置一個FormBean,相信有些人會和我有同樣的困惑,這個FormBean在整個FrameWork裡扮演的是一個什麼樣的角色,它到底有什麼樣的作用。帶著這些疑惑,我們來跟蹤一下這個FormBean在FrameWork裡到底幹了些什麼。怎麼做的。
我們在web模組的web-inf目錄下找到struts-config.xml這個XML設定檔,從下面這個目錄裡我們可以看到struts-config.xml設定檔可以分成很多個的,這樣便於設定檔的管理,一個模組對應一個設定檔,非常清晰。我們開啟其中的一個Config設定檔(如紅色框的檔案)
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
我們在設定檔裡看到有<form-beans>標籤這裡定義的是這個模組所需要的FormBean如下圖所示,這裡type="butone.hr.rcyw.ldht.object.LDHTVO"是指FormBean的包路徑,名稱為name="LDHTVO",我們再在下面的<action-mappings>標籤裡可以看到一個action對應一個FormBean,由此可以知道Action與FormBean是一一對應且是唯一的。
我們再開啟LDHTAction這個檔案看看,我們在檔案中根據傳遞的cmdFlag為“select”可以看到一下代碼:
LDHTPageInfoVO aLDHTPageInfoVO = new LDHTPageInfoVO();
aLDHTPageInfoVO.queryCommCondition = SelectCondition.toString();
Vector result = aLDHTService.selectLDHTList(aLDHTPageInfoVO);
request.setAttribute("pageResult", result);
從這段代碼裡我們完全看不到LDHTVO這個VO,我們發現只有LDHTPageInfoVO,我們再看看這個VO裡到底有些什麼東西:
public class LDHTPageInfoVO extends PageInfoVO {
public LDHTPageInfoVO() {
orderName = LDHTConstant.DEFAULT_ORDER_NAME;
orderType = LDHTConstant.DEFAULT_ORDER_TYPE;
rowsPerPage = LDHTConstant.ROWS_PER_PAGE;
tableName = LDHTConstant.VIEW_NAME;
listNames = LDHTConstant.SELECT_COLS;
}
}
原來僅僅繼承了一個分頁的PageInfoVO,裡面還有分頁的資訊。
我們繼續跟蹤這段話Vector result = aLDHTService.selectLDHTList(aLDHTPageInfoVO);
開啟LDHTService這個類找到selectLDHTList這個方法
public Vector selectLDHTList(PageInfoVO apageInfoVO) throws Exception {
return aLDHTLocal.selectLDHTList(apageInfoVO);
}
這個方法只有一句話,調用了一個SessionBean方法LDHTHandle,開啟這個SessionBean我們可以找到這個方法如下:
public Vector selectLDHTList(PageInfoVO apageInfoVO) throws Exception {
LDHTVO aLDHTVO = new LDHTVO();
LDHTDBAccess aDBAccess = new LDHTDBAccess();
return aDBAccess.selectPage(apageInfoVO, aLDHTVO);
}
哈哈,終於出現LDHTVO了,這個方法調用了一個LDHTDBAccess類裡的selectPage方法並傳入了兩個參數其中一個是分頁資訊,另一個就是LDHTVO這個VO。
我們繼續跟蹤看看selectPage這個方法到底幹了些什麼。 開啟LDHTDBAccess這個類找到selectPage這個方法:
public class LDHTDBAccess extends DBPageBean {
/**
* Description: 刪除一條記錄
* @param String id
* @return void
* @throw Exception
*/
public void deleteOne(String id) throws Exception {
StringBuffer SQL = new StringBuffer();
SQL.append("delete from ");
SQL.append(LDHTConstant.TABLE_NAME);
SQL.append(" where ");
SQL.append(LDHTConstant.KEY_NAME);
SQL.append("='");
SQL.append(id);
SQL.append("'");
exectueSql(SQL.toString());
}
/**
* @method isIllegal