先回答上周的问题,我在新的路径中配置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框架将忽略该属性。
总结:东西好多,慢慢学吧