从那天在实验室老胡看到我没事被叫来看看就这么来实习了。话说我还想说在学校玩玩,或者去昊哥那里。可是我缺钱,有不好
意思说要多点钱。就一直拖着。昊哥还给找了恒星那边,可是自己基础不牢还怯。烦躁!
现在已近来公司块一个月了。因为项目于交接之类的问题,现在闲的蛋疼,总结下最近的问题。
关于SSH框架。会用不了解详细的说,想说看书就是玩。唉,我现在删了手机里的小说吧。删了4本了。。。这个框架慢慢熟悉了
解里面的一些个详细情况把。
关于在myeclipse里用SVN的插件最近也熟悉了点。不过还是想抽空找昊哥之类的大牛问问具体冲突咋个弄,不过应该也是合并了
提交吧。
在MyEclipse里面注释的模板修改:windows --> preferences --
项目具体:
最近是做一个流程管理的模块。主要是进行流程的设定。
项目问题&关键代码:
1.ztree的相关。
相关demo和api之类的已经传到资源里面去了(3分而已..都没人下)。要生成一个树主要的步骤就是:(1)先进行相
关的设定比如回调函数、是否异步加载。(2)再写一个树的各个节点的数据。(3)进行树的初始化
code:
var setting = { async:{ enable: false },data: { key: { //title:"t" }, simpleData: { enable:true, idKey: "id", pIdKey: "pId", rootPId: "" } },callback: { onClick: TreeNodeOnClick } }; //创建树 var zNodes =[ <%for (int i = 0; i < treeNodeList.size(); i++) { if (i > 0) { out.print(","); }%> {id:<%=treeNodeList.get(i).getId()%>,pId:<%=treeNodeList.get(i).getpId()%>, name:'<%=treeNodeList.get(i).getName()%>',dbId:<%=treeNodeList.get(i).getDbId()%>, open:<%=treeNodeList.get(i).isOpen()%>,isParent:<%=treeNodeList.get(i).getIsParent()%>, typeId:<%=treeNodeList.get(i).getTypeId()%> } <%}%> ]; $(document).ready(function(){ //加载树状结构 $.fn.zTree.init($("#tree"), setting, zNodes); }); //点击treeNode的回调函数 function TreeNodeOnClick(vent, treeId, treeNode, clickFlag){ typeId = treeNode.id; getProcessInfo(); }
2.checkBox多选
code:
checkBox 全选多选的js代码
function checkboxSelect(checkBox,name){ if(checkBox.checked){ $("input[name='check']").each(function(){this.checked=true;}); }else{ $("input[name='check']").each(function(){this.checked=false;}); } }
页面控件的html,其他的checkBox的name是上面的check就好了。
<input type="checkbox" οnclick='checkboxSelect(this,this.name)' name="checkAll" value="-1">
ps:这个$ each的循环比较好用,跳出循环是 return false;
3.js的确定删除的对话框
code:
if(confirm("确定删除选中的项目?")) { TODO(); }
4.jquer的异步提交这个postUrl是拼出来的提交的url,带有提交时需要的参数信息。eg: postUrl = xxx!xxx.action?A=a&B=b。为了使每次的url都不一样要加个Math.random()
code:
后台的数据变成json通过异步传到jsp。后台的code: JSONArray.fromObject(list).toString(); list是需要转化的list。以下的postUrl += "random="+Math.random(); $.ajax({ url : postUrl, type : "post", success : function(data){ try{ if(data == '<%=DataStaticConstants.SUCCESS_MESSAGE%>'){ getProcessInfo(); alert('操作成功!'); }else{ alert('操作失败!'); } }catch(e){alert(e.message);} } });
代码主要是通过后台的json数据在前台生成一个table。data就是返回的数据。
var dataObj=eval("("+data+")"); $("#listTable tr:not(:first)").remove(); if(dataObj.length>0){ $.each(dataObj,function(index,content){ var trStr = '<tr orderNo="'+content.orderNo+'" id="'+content.colId+'" οnmοusemοve="this.className=\'list-tr\';" οnmοuseοut="this.className=this.rowIndex%2==1?\'list-tr2\':\'list-tr1\'"'; //表格每行颜色不同 if(index%2==0){ trStr += ' class="list-tr2">'; } else { trStr += ' class="list-tr1">'; } trStr += '<td align="center"><input type="checkbox" name="check" id="'+content.colId+'Box"/>'; trStr += '<input type="hidden" id="'+content.colId+'Hidden" value="'+content.isSys+'"></td>'; trStr += '<td align="center">'+index+'</td>'; trStr += '<td align="center">'+content.colCName+'</td>'; trStr += '<td align="center">'+content.colType+'</td>'; trStr += '<td align="center">'+content.colWidth+'</td>'; trStr += '<td align="center">'+content.isPrimary+'</td>'; trStr += '<td align="center">'+content.colMultMode+'</td>'; trStr += '<td align="center">'+content.isView+'</td>'; trStr += '<td align="center">'+content.colDec+'</td>'; trStr += '<td align="center">'+content.isNull+'</td>'; //是否是系统的,操作区显示与否 //~!~~下面的'!='是测试~~正常是'==' if(content.isSys == 1) { trStr += '<td align="center"></td></tr>'; } else { trStr += '<td align="center">'; trStr += '<a href="javascript:void(0);" οnclick="editTr('+content.colId+','+content.dbId+')">修改</a> '; trStr += '<a href="javascript:void(0);" οnclick="deleteTr('+content.colId+',\''+content.colCName+'\')">删除</a>'; trStr += '</td></tr>'; } $('#listTable').append(trStr); }); } $("#loadingDiv").hide(); $("#tableDiv").show();
5.struts2的循环tag(感谢胖子)
code:
<s:iterator value="showList" id="user" status="userIndex"> <s:if test="#userIndex.index%2 == 0"> <tr id='<s:property value="%{#user.colId}"/>' class="list-tr2" οnmοusemοve="this.className='list-tr';" οnmοuseοut="this.className='list-tr2'"> </s:if> <s:else> <tr id='<s:property value="%{#user.colId}"/>' class="list-tr1" οnmοusemοve="this.className='list-tr';" οnmοuseοut="this.className='list-tr1'"> </s:else> <td align="center"> <s:if test="#userIndex.index%2 == 0"> <input type="checkbox" name="check" id='<s:property value="%{#user.colId}"/>Box' onClick='changeBox("<s:property value="%{#user.colId}"/>","2");'/> </s:if> <s:else> <input type="checkbox" name="check" id='<s:property value="%{#user.colId}"/>Box' onClick='changeBox("<s:property value="%{#user.colId}"/>","1");'/> </s:else> </td> <td style="padding-left:13px;"> <s:property value="%{#user.colCName}"/> <s:hidden id="%{#user.colId}name" value="%{#user.colCName}" ></s:hidden> </td> <td align="center" > <input id='<s:property value="%{#user.colId}"/>Width' style= "text-align:right;" name="input" value='<s:property value="%{#user.showWidth}"/>' />px </td> </tr> </s:iterator>
6.js通过checkBox移动tr
code:
7.杂&注意function cleanWhitespace(element) { //遍历element的子结点 for (var i = 0; i < element.childNodes.length; i++) { var node = element.childNodes[i]; //判断是否是空白文本结点,如果是,则删除该结点 if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) node.parentNode.removeChild(node); } } var _table=document.getElementById("listTable"); cleanWhitespace(_table); //获取选中的tr function selectTr(){ var flag = 0; var tr; $("input[name='check']").each(function(){ //是否选中 if(this.checked==true) { if(flag == 1){ flag = 2; return false; } else{ tr = this.parentNode.parentNode; flag = 1; } } }); if(flag == 0){ alert("请选择一个进行移动!"); return 0; } if(flag == 1){ return tr; } if(flag == 2){ alert("只可以选择一个进行移动"); return 0; } } //上移 function trUp() { if(selectTr()){ var _row = selectTr(); //如果不是第一行,则与上一行交换顺序 if(_row.previousSibling.previousSibling){ swapNode(_row,_row.previousSibling); }else { alert("不能再向上移动了!"); return false; } }else { return false; } } //下移 function trDown() { if(selectTr()){ var _row = selectTr(); //如果不是第一行,则与上一行交换顺序 if(_row.nextSibling){ swapNode(_row,_row.nextSibling); }else { alert("不能再向下移动了!"); return false; } }else { return false; } } //定义通用的函数交换两个结点的位置 function swapNode(node1,node2){ //获取父结点 var _parent=node1.parentNode; //获取两个结点的相对位置 var _t1=node1.nextSibling; var _t2=node2.nextSibling; //将node2插入到原来node1的位置 if(_t1)_parent.insertBefore(node2,_t1); else _parent.appendChild(node2); //将node1插入到原来node2的位置 if(_t2)_parent.insertBefore(node1,_t2); else _parent.appendChild(node1); }
js提交action
关于ajaxSubmit提交function reFresh() { document.forms['queryForm'].action = "flowcharSet!setProcessFieldShowInit.action"; document.forms['queryForm'].submit(); }
8.SSH里的Dao层
hibernate说是面向对象的编程思想。贴一段查询的代码
关于hibernate不了解。开始觉得这个东西很挫。现在还是.......Criteria criteria = this.getSession().createCriteria(Column.class); criteria.add(Restrictions.eq("dbId", dbId)); criteria.add(Restrictions.isNotNull("showOrderNo")); criteria.addOrder(Order.asc("showOrderNo")); if(!criteria.list().isEmpty()){ List<Column> list = criteria.list(); return list; } else{ return null; }