从那天在实验室老胡看到我没事被叫来看看就这么来实习了。话说我还想说在学校玩玩,或者去昊哥那里。可是我缺钱,有不好
意思说要多点钱。就一直拖着。昊哥还给找了恒星那边,可是自己基础不牢还怯。烦躁!
现在已近来公司块一个月了。因为项目于交接之类的问题,现在闲的蛋疼,总结下最近的问题。
关于SSH框架。会用不了解详细的说,想说看书就是玩。唉,我现在删了手机里的小说吧。删了4本了。。。这个框架慢慢熟悉了
解里面的一些个详细情况把。
关于在myeclipse里用SVN的插件最近也熟悉了点。不过还是想抽空找昊哥之类的大牛问问具体冲突咋个弄,不过应该也是合并了
提交吧。
在MyEclipse里面注释的模板修改:windows --> preferences --> java --> Code Style --> Code Templates 可以导入导出&修改。
项目具体:
最近是做一个流程管理的模块。主要是进行流程的设定。
项目问题&关键代码:
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" onclick='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:
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通过异步传到jsp。后台的code: JSONArray.fromObject(list).toString(); list是需要转化的list。以下的
代码主要是通过后台的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+'" onmousemove="this.className=\'list-tr\';" onmouseout="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);" onclick="editTr('+content.colId+','+content.dbId+')">修改</a> ';
trStr += '<a href="javascript:void(0);" onclick="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" onmousemove="this.className='list-tr';" onmouseout="this.className='list-tr2'">
</s:if>
<s:else>
<tr id='<s:property value="%{#user.colId}"/>' class="list-tr1" onmousemove="this.className='list-tr';" onmouseout="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:
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);
}
7.杂&注意
js提交action
function reFresh() {
document.forms['queryForm'].action = "flowcharSet!setProcessFieldShowInit.action";
document.forms['queryForm'].submit();
}
关于ajaxSubmit提交8.SSH里的Dao层
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;
}
关于hibernate不了解。开始觉得这个东西很挫。现在还是.......