1、生成年月日+4位流水号
String s=getCommonQueryService().getDatabaseTime("yyyyMMddHH24miss");
int x=(int)(Math.random()*9000)+1000;
String serial = s + x;
model.setTtk_lsh(serial);
2、文件框必选 文本框 传入空值文本框最大输入长度
<span style="color: red;">*</span>
validate="{fileRequest:true,stringMaxLength:20}"、、、、validate="{required:true}"
headerValue="--请选择--" headerKey=""
3.下拉选 Action 初始化条件共用方法
getValueStack().set("xnmList",this.getCommonBaseService().queryXnList());//学年
list="xnmList" listKey="xnm"listValue="xnmc"
getValueStack().set("xqmList",this.getCommonSqlService().queryJcsjList(JCSJConstant.XQDMB));//学期
list="xqmList" listKey="dm"listValue="mc"
getValueStack().set("shztList", BaseDataReader.getCachedBaseDataList("shrplusStatusList"));//审核状态表
list="shztList" listKey="key"listValue="value"
getValueStack().set("kcxzList", this.getCommonBaseService().queryKcxzList());//课程性质
getValueStack().set("kkxyList", this.getCommonSqlService().queryAllKkbm());//开课学院
list="kkxyList" listKey="jg_id"listValue="jgmc"
setProperty("pyccList",this.getCommonSqlService().queryJcsjList(JCSJConstant.PYCCDMB));//培养层次
s.set("kclbList",this.getCommonBaseService().getList("jw_jh_kclbdmb","kclbdm","kclbmc"));//课程类别
list="kclbList"listKey="KCLBDM"listValue="KCLBMC"
vs.set("xyList",this.getCommonSqlService().queryAllXy()); //学生学院
list="xyList"listKey="jg_id"listValue="jgmc"
vs.set("njList",this.getCommonSqlService().queryAllNj()); //年级
vs.set("zyList",this.getCommonSqlService().queryAllZy()); //专业
vs.set("bjList",this.getCommonSqlService().queryAllBj()); //班级
setProperty("sfjcxy",commonSqlService.getInnerParam("SFJCXY")); //调取系统内置表
/**
*@描述:初始化查询条件
*@创建人:kwy
*@throws Exception
*/
privatevoid setValueStack() throws Exception {
ValueStackvs = getValueStack();
vs.set("xnmList",this.getCommonBaseService().queryXnList());//学年
vs.set("xqmList",this.getCommonSqlService().queryJcsjList(JCSJConstant.XQDMB));//学期
vs.set("shztList",BaseDataReader.getCachedBaseDataList("shrplusStatusList")); //审核状态列表
vs.set("kkxyList",this.getCommonSqlService().queryAllKkbm());//开课学院
vs.set("model",this.model);
}
4.公用异常处理
catch (Exceptione) {
logException(e);
returnERROR;
}
5.日历时间插件
<%@ includefile="/WEB-INF/pages/globalweb/head/wdatePicker.ini"%>
<input id="qssj_id_zj"name="qssj" class="form-control Wdate"readonly="readonly" placeholder="点击选择开始时间" οnfοcus="WdatePicker({dateFmt:'yyyy-MM-dd'});"/>
6.学年学期,设置为必填防止数据库Null、错误字符SQL末尾不可加;号
7.设置特殊类型SQL语句可以为空的
#{qssj,jdbcType=VARCHAR},
8.JqGrid 点击表头不排序
{label:'控制类型',name:'kzlx', index: 'kzlx',sortable:false,hidden:true,key:true,align:'center'},
9.修改事件传多个值
js
//绑定修改点击事件
jQuery("#btn_xg").click(function () {
var id = getChecked()
if(id.length != 1){
$.alert('请选定一条记录!');
return;
}
var row = jQuery("#tabGrid").jqGrid('getRowData', id);
var url = _path +'/jxzxjhgl/jxzxjhkcxx_xgJxzxjhkcxx.html?jxzxjhkcxx_id='+id+"&jxzxjhxx_id="+row["jxzxjhxx_id"]+"&jhzyh_id="+$("#jhzyh_id").val()+"&jhnjdm="+$("#jhnjdm").val()+"&jhnjmc="+$.encode(jQuery("#jhnjmc").val());
$.showDialog(url,'修改',$.extend(modifyConfig,{"width":"900px"}));
});
Action
String jhnjmc =getRequest().getParameter("jhnjmc");
10.jqGrid 获取主键key值
{label:'成绩复查申请Id',name:'cjfcsq_id',index: 'cjfcsq_id',align:'center',width:'50px',sortable:false,key:true,hidden:true},
var ids = $("#tabGrid").getKeys();
11.数据模糊查询 的SQL
<if test="kc !=null and kc !='' ">
AND kch||kcmc like '%'||#{kc}||'%'
</if>
<iftest="xh != null and xh !=''">
and (t2.xhlike '%'||#{xh}||'%' or t2.xm like '%'||#{xh}||'%')
</if>
12.点击查询按钮无相应
可能是 <!-- table-start -->
<divclass="ui-grid-handle"id="tabResize"> </div>
<tableid="tabGrid_sq"></table>
<divid="pager"></div>
<!-- table-end -->
这里的Id值与父页面有重复的
13.当前学年 学期
model.setXnm(this.getCommonSqlService().cxXtszxz(GlobalXtszx.DQXNM));
model.setXqm(this.getCommonSqlService().cxXtszxz(GlobalXtszx.DQXQM));
或者
XnxqModel xnxqModel =this.getCommonBaseService().queryXnxq();
14.当前用户id
model.setXh_id(getUser().getYhlybid());//登陆学生/教师
model.setJgh_id(getUser().getJsdm());//返回(js|xs)
getUser().getJsdm()//可以直接返回一个布尔类型
15.提交一个Map集合 jqGrid 获取一行数据
js
var rows = $("#tabGrid_sq").getKeys();
var requestMap = {};
var rowObject = jQuery('#tabGrid_sq').jqGrid('getRowData',rows);
requestMap["xnm"] = rowObject.xnm;
requestMap["xqm"] = rowObject.xqm;
requestMap["cjxzm"] =rowObject.cjxzm;
jQuery.post(_path +'/cjfcgl/cjfcsq_cxCjfcsq.html',requestMap,——cxCjfcsqIndex.js(78)
16.级联查询
/**级联方法开始*/
方法一
var map = {};
map["jg_id"] = $("#jg_id_cx").val();
map["zyh_id"] = $("#zyh_id_cx").val();
map["bh_id"] = $("#bh_id_cx").val();
map["njdm_id"] = $("#njdm_id_cx").val();
name:固定值
map.mapper = {"jg_id":"jg_id","zyh_id":"zyh_id","bh_id":"bh_id","njdm_id":"njdm_id"};
方法二
$.bindChangeEvent("#jg_id_cx","","#zyh_id_cx","","#bh_id_cx","#njdm_id_cx", map,function(){},"全部",true);
/**级联方法结束*/
17.共用空值判断
!BlankUtils.isBlank()//非空
18.jqGrid Table自动列宽 取消后不查询 可撑起一段距离
shrinkToFit: true,
19.弹窗提示操作 代码
getValueStack().set(DATA,getText("I99007",new String[]{"审核"}));
setProperty(DATA, "操作成功");
getValueStack().set(DATA, getText("I99001"));
20.自动生成Id值的共用方法
model.setXsqtcjsq_id(getCommonQueryService().getSysGuid());
21.提交一个请求,如果请求时间过长,使用遮罩提示
//显示遮罩
$("#subForm").backdrop("show",{"text":"正在保存.请等待......"});
//隐藏遮罩
$("#subForm").backdrop("hide");
22.撤销申请
/**
*
*@描述 : 撤销申请
*@创建人 :tuwenjun
*@创建时间 :2017-07-03
*/
publicString cxsqXmbm(){
try{
String[] ids =model.getXmsb_id().split(",");
for(Stringid : ids) {
model.setXmsb_id(id);
Stringshzt = SpUtil.shlc(model.getXmsb_id(),"cx",model);
if(shzt!=null){
model.setSqzt("0");
model.setShzt(shzt);
service.updateCxsq(model);
}
}
getValueStack().set(DATA, "撤销成功!");
}catch(Exceptione){
logException(e);
returnERROR;
}
returnDATA;
}
23.Action异常信息捕获规范:
// 1、返回 ERROR页面:
try {
}catch (Exceptione) {
logException(e);
return ERROR;
}
return SUCCESS;
// 2、提示信息返回:
try{
getValueStack().set(DATA,getText("I99007",newString[]{"停用"}));
}catch (Exception e) {
logStackException(e);
getValueStack().set(DATA,getText("I99008",newString[]{"停用"}));
}
// 3、JSON数据返回:
try{
List<Map<String, String>> modelList = service.getPagedBkxxkLsList(model);
QueryModelqueryModel = model.getQueryModel();
queryModel.setItems(modelList);
getValueStack().set(DATA,queryModel);
}catch(Exception e){
logStackException(e);
getValueStack().set(DATA,model.getQueryModel());
}
return DATA;
24.教学计划管理—培养方案维护—周学时显示方式,合并PyfaxxckServiceImpl.java3873
public staticString getZhxsXx(Stringzhxs) {
StringzhxsStr = null;
if (!BlankUtils.isBlank(zhxs) &&zhxs.indexOf("-")>-1) {
String[]zhxsArr = zhxs.split("-");
if (zhxsArr.length>2) {
double fxZhxs = 0;
for (int i = 1;i < zhxsArr.length; i++) {
fxZhxs+= Double.valueOf(zhxsArr[i]);
}
zhxsStr= zhxsArr[0]+"-"+fxZhxs;
}else {
zhxsStr= zhxs;
}
}else {
zhxsStr= zhxs;
}
return zhxsStr;
}
25.
// Stringzxs =null;
// if(!BlankUtils.isBlank(zhxs)){//防止周学时出现NullPointerException
// zxs =String.valueOf(Double.valueOf(zhxs)*16);
// }else{
// zxs="";
// }
25.关于List 与Map集合的 使用对象问题
只要对象还没回收,对应的还是那个内存地址,改的话还是那个对象,不管给哪个引用
换了个引用,对象还是那个对象
26.控制台报 sql查询 标识符无效
可能是插入字段在一个库中 eclipse 连接的是另一个库所以查不出来。
27.JqGrid通过判断显示列
zyxx.js
28.jsp框只读 (黄色底纹)
<div class="row">
<div class="col-md-12 col-sm-12">
<div class="form-group form-group-sm">
<label for="" class="col-sm-2 control-label"><span class="red">*</span>证书名称</label>
<div class="col-sm-8">
<s:textfield maxlength="200" name="xmmc" id="xmmc"
readonly="true" cssClass="form-controlinput-sm span2" data-rules='{"required":true}'>
</s:textfield>
</div>
</div>
</div>
29.js获取jsp数据序列化
30.model 字符类型转换 编码
return StringUtils.isURLEncoderString(xh)?URLUtils.unescape(xh):xh;
31.时间控件 自动前后实践冲突判断
通过添加validate="{beforeDate:'#yxkssj'}"|| validate="{afterDate:'#yxjssj'}" 来标记起始结束实践
<div class="row">
<div class="col-md-6 col-sm-12">
<div class="form-group">
<label for="" class="col-sm-4 control-label"><span class="red">*</span>预选开始时间</label>
<div class="col-sm-7">
<input type="text" class="form-control Wdate" validate="{beforeDate:'#yxjssj'}"text="开始时间" id="yxkssj" name="yxkssj"
placeholder="点击选择时间" onFocus="WdatePicker({isShowClear:false,readOnly:true,dateFmt:'yyyy-MM-ddHH:mm:ss'})">
</div>
</div>
</div>
<div class="col-md-6 col-sm-12">
<div class="form-group">
<label for="" class="col-sm-3 control-label"><span class="red">*</span>预选结束时间</label>
<div class="col-sm-7">
<input type="text" class="form-control Wdate" validate="{afterDate:'#yxkssj'}"text="结束时间" id="yxjssj" name="yxjssj" placeholder="点击选择时间" onFocus="WdatePicker({isShowClear:false,readOnly:true,dateFmt:'yyyy-MM-ddHH:mm:ss'})">
</div>
</div>
</div>
32.下拉选样式 Class选择器来指定chosen样式
cssClass="form-control chosen-select"
<script>
$("select").trigger("chosen");
</script>
33.防止表单自动提交 加黄色底纹
<s:form cssClass="form-horizontal sl_all_form" id="ajaxForm"name="form"role ="from" method="post" action="/kcyx/xyyxsz_zjBcXyyxsz.html" theme="simple" onsubmit="return false;">
34.java工具类BeanUtils是较常用的工具类,它的copyProperties()方法。
主要目的是利用反射机制对JavaBean的属性进行处理,减少对JavaBean的处理导致大量get/set代码堆积
XyyxszModel xyyxszModel= service.getModel(model);
PropertyUtils.copyProperties(model, xyyxszModel);
35.删除功能返回结果 编码风格标黄
public StringscXyyxsz() {
try {
getRequest().getParameter("ids");
model.setTableName("table_006");
boolean result= service.delete(model);
String key = result? "I99005" : "I99006";
getValueStack().set(DATA, getText(key));
}catch (Exceptione) {
logException(e);
getValueStack().set(DATA, getText("I99006"));
}
return DATA;
}
36.公共方法 调用查询课程页面
在jsp中 定义
<div class="col-md-3col-sm-6">
<div class="form-group">
<label for=""class="col-sm-4control-label"><spanstyle="color:red">*</span>课程</label>
<div class="col-sm-8">
<div class="input-group">
<input type="hidden"name="kch_id"value=""id="kch_id">
<input type="hidden"name="kch"value=""id="kch">
<input type="text"name="kcmcandkch"value=""readonly="readonly"id="kcmcandkch"
class="form-control"validate="{required:true}">
<span class="input-group-btn">
<button class="btn btn-default" data-toggle="modal" onclick="selectKc()"type="button">></button>
<button class="btn btn-default" data-toggle="clearfix"data-target="#kch,#kch_id,#kcmcandkch"
type="button" onclick="clearXs()">清除</button>
</span>
</div>
</div>
</div>
</div>
在JS中添加方法
//选择课程
function selectKc(){
jQuery.showSelectDialog("6",{"multiselect":false,"rangeable":false},function(result){
$("#kch").val(result[0].KCH);
$("#kch_id").val(result[0].KCH_ID);
$("#kcmcandkch").val(result[0].KCMC+"["+result[0].KCH_ID+"]");
//点击确定页面不关闭
//search('xsGrid',param());
});
}
//清除学生
function clearXs(){
$("#bot_ul").empty();
search('xsGrid',param());
}
37.sql控制台报错
### Error querying database. Cause: java.sql.SQLSyntaxErrorException:ORA-00911: 无效字符
因为 sql 结尾加了“ ;” 一个分号
38.JS百分比计算方法
//百分比计算开始
var results =(PracticeCredit+TyAndSykZxf)/zxfs*100;
var resultss = Math.round(results * 100) / 100;
$("#results").text(resultss);
39.关于弹出框 自动提交表单
1.弹出框里面的按钮button 要加上TYPE="BUTTON" 不然在IE或者其他浏览器的时候会自动提交表单
2.似乎表单的地方也要加submit= "return false"
40.高级查询
{"index":"xq_list","text":"校区",url:_path+"/query/query_cxXqList.html",mapper:{"key":"xqh_id","text":"xqmc"},sort:"xqmc",order:"desc"},
{"index":"njdm_id_list","text":"年级",url:_path+"/xtgl/comm_cxNjPaged.html",mapper:{"key":"njdm_id","text":"njmc"},showSize:10,sort:"njmc",order:"desc"},
{"index":"jg_id_list","text":"学院",url:_path+"/xtgl/comm_cxXydmPaged.html",mapper:{"key":"jg_id","text":"jgmc"},sort:"jgdm",order:"desc",gridType:"3"},
{"index":"zyh_id_list","text":"专业",url:_path+"/xtgl/comm_cxZydmPaged.html",mapper:{"key":"zyh_id","text":"zymc"},parent:"jg_id_list",sort:"zyh",order:"desc",gridType:"4"},
{"index":"zyfx_id_list","text":"专业方向",url:_path+"/xsxxxggl/xsxxwh_cxZyfxPaged.html",mapper:{"key":"zyfx_id","text":"zyfxmc"},parent:["njdm_id_list","jg_id_list","zyh_id_list"],sort:"zyfx_id",order:"desc",gridType:"11"},
{"index":"xz_list","text":"学制",url:_path+"/query/query_cxXzList.html",mapper:{"key":"XZ","text":"XZ"},showSize:20,parent:"zyh_id_list",sort:"XZ",order:"desc"},
{"index":"bh_id_list","text":"班级",url:_path+"/xtgl/comm_cxBjdmPaged.html",mapper:{"key":"bh_id","text":"bj"},parent:["zyh_id_list","njdm_id_list"],sort:"bh",order:"desc",gridType:"5"},
41.table 整体 字体缩小标黄
<table id="tabGrid" class="ui-grid-handle" > </table>
<div id="pager"></div>