從那天在實驗室老胡看到我沒事被叫來看看就這麼來實習了。話說我還想說在學校玩玩,或者去昊哥那裏。可是我缺錢,有不好
意思說要多點錢。就一直拖着。昊哥還給找了恆星那邊,可是自己基礎不牢還怯。煩躁!
現在已近來公司塊一個月了。因爲項目於交接之類的問題,現在閒的蛋疼,總結下最近的問題。
關於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不瞭解。開始覺得這個東西很挫。現在還是.......