先回答上週的問題,我在新的路徑中配置model類,編譯後映射不了。
而原因是我沒有在resource路徑下的applicationContext.xml中添加我的路徑,以至於Spring無法找到我新增的路徑的各個類,當然也就映射不到model類了。
添加路徑聲明在
<property name="annotatedPackagePrefixes">
下的list添加。
這次任務工作量不多,就是對一個數據類型的增刪改查,表只有三個,指標項(我要操作的數據)表,指標項審覈表和計算方法表。這周我寫的是指標項增刪改查和審覈的初型,暫還沒用到計算方法表。而我這周的收穫最多的就是對這個框架的熟悉。
上週主要做了實體類的創建和映射,在做完這步後我從前臺開始入手,先畫了個數據增加的頁面。然後我要弄清楚前臺數據傳入後臺的方式。
這裏要知道,前臺到後臺,一般都是調用action來實現的,而我這周接觸的action類型有四種。
1.不帶參數的,只是單獨打開另一個頁面的action,調用實例如:
function addColumn(){
mini.open({
url: "/hzrsmh/portal/f11010101/columnAddIndex.action",
title: "創建指標項", width: 600, height: 600,allowResize:false,
onload: function () {},
ondestroy: function (action) {
grid.reload();
}
});
}
在這個jsp中,我創建了個點擊新增按鈕就會觸發的function,然後它會調用url中的columnAddIndex.action,而在f11010101Action.xml中我定義了columnAddIndex.action:
<action name="columnAddIndex" class="navigateAction">
<result name="success">/WEB-INF/pages/portal/f11010101/addColumn.jsp</result>
</action>
它的class是navigateAction,就是不進行任何操作,只是單純打開定義的jsp。
2.帶參數的action調用,如:
function modifyColumn(){
var row = grid.getSelected();
if(row){
mini.open({
url: "/hzrsmh/portal/f11010101/columnModifyIndex.action?dataid="+row.dataid,
title: "指標項修改", width: 1028, height: 960,allowResize:false,
ondestroy: function (action) {
grid.reload();
}
});
}else{
Wssip.util.showTips('請先選擇指標項!',2000);
}
}
與上相同,也是打開一個jsp,但會在該jsp中傳入指定的參數。
3.請求類action,這種一般在初始化頁面時用到,即向後臺傳遞一個參數,後臺根據參數獲取該表中一列或多列的數據,轉化成json數據,傳遞到前臺。(注:前臺與後臺數據定義的方式是,前臺定義控件的名稱與後臺實體類的名稱相同,數據會自動匹配。)如:
function doReset() {
MiniUtils.maskwin("加載中...");
Wssip.util.request("<c:url value='/portal/f11010101/loadColumn.action'/>",{dataid:${param.dataid}},"POST",function(data){
MiniUtils.unmaskwin();
var form =new mini.Form("modifyForm");
form.setData(data);
},function(data){
MiniUtils.unmaskwin();
mini.get("btn_submit").disable();
MiniUtils.error(data.msg);
});
}
4.前臺向後臺傳遞數據。與body中定義一句:
<c:url var="FORM_URL" value="/portal/f11010101/modifyColumn.action"></c:url>
這樣可以用form.data獲取各個控件的數據,再傳入後臺如:
function doAdd(button){
var form =new mini.Form("modifyForm");
form.validate();
if(!form.isValid()){
return;
}
button.disable();
json =form.getData();
MiniUtils.maskwin("提交中...");
Wssip.util.submit("${FORM_URL}",json,function(data){
MiniUtils.unmaskwin();
mini.alert("添加成功!");
},function(data){
MiniUtils.unmaskwin();
button.enable();
MiniUtils.error(data.msg);
});
}
在熟悉了該框架的前後臺數據交換後,做這個東西就不難了,不過中間還是會因爲粗心出各種各樣的BUG,慢慢成長吧!
添加:@override和@Transient的作用,@Override標註該方法是重載的,如果該方法形式與父類不同,編譯器會發出警告。
再添加:ORACLE 的sequence作用和定義方法,sequence的作用就是自動生成主鍵編號,而sequence的定義方法是,先在數據庫中創建設置,再在實體類中添加標註。
@Transient標註該屬性不與數據庫映射,ORM框架將忽略該屬性。
總結:東西好多,慢慢學吧