SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成。本站提示廣大學習愛好者:(SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成)文章只能為提供參考,不一定能成為您想要的結果。以下是SSH框架網上商城項目第8戰之查詢和刪除商品種別功效完成正文
上一節我們完成了應用DataGrid顯示一切商品信息,這節我們開端添加幾個功效:添加、更新、刪除和查詢。起首我們完成下前台的顯示,然後再做後台獲得數據。
1. 添加、更新、刪除和查詢功效的前台完成
DataGrid控件裡有個toolbar屬性,是添加對象欄的,我們可以在toolbar屬性中添加這些按鈕來完成響應的功效。先看一下官方文檔對toolbar的界說:
我們應用數組的方法界說對象欄,在query.jsp頁面中新添加以下代碼:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> <style type="text/css"> body { margin: 1px; } .searchbox { margin: -3; } </style> <script type="text/javascript"> $(function(){ $('#dg').datagrid({ //url地址改成要求categoryAction url:'category_queryJoinAccount.action', singleSelect:false, //假如為真,只許可單行顯示,全選功效掉效 //設置分頁 pagination:true, //設置每頁顯示的記載數,默許是10個 pageSize:5, //設置可選的每頁記載數,供用戶選擇,默許是10,20,30,40... pageList:[5,10,15,20], idField:'id',//指定id為標識字段,在刪除,更新的時刻有效,假如設置裝備擺設此字段,在翻頁時,換頁不會影響選中的項 /*********************添加的代碼***********************/ toolbar: [{ iconCls: 'icon-add', text:'添加種別', handler: function(){ alert('--加添種別--'); } },'-',{ iconCls: 'icon-edit', text:'更新種別', handler: function(){ alert('--更新種別--'); } },'-',{ iconCls: 'icon-remove', text:'刪除種別', handler: function(){ //斷定能否有選中行記載,應用getSelections獲得選中的一切行 var rows = $("#dg").datagrid("getSelections"); //前往被選中的行,假如沒有任何行被選中,則前往空數組 if(rows.length == 0) { //彈出提醒信息 $.messager.show({ //語法相似於java中的靜態辦法,直接對象挪用 title:'毛病提醒', msg:'至多要選擇一筆記錄', timeout:2000, showType:'slide', }); } else { //提醒能否確認刪除,假如確認則履行刪除的邏輯 $.messager.confirm('刪除切實其實認對話框', '您肯定要刪除此項嗎?', function(r){ if (r){ // 加入操作; alert("--刪除操作--") } }); } } },'-',{ //查詢按鈕不是LinkButton,它有語法,然則也支撐解析HTML標簽 text:"<input id='ss' name='serach' />" }], //把通俗的文本框轉化為查詢搜刮文本框 $('#ss').searchbox({ //觸發查詢事宜 searcher:function(value,name){ //value表現輸出的值 //查詢操作 }, prompt:'請輸出搜刮症結字' //默許的顯示 }); /*********************************************************************/ }); </script> </head> <body> <table id="dg"></table> </body> </html>
如許我們就搭好了添加、更新、刪除和查詢的前台框架了,如今可以在前台顯示了,後台沒稀有據過去,只是彈出個提醒框,不外顯示功效曾經完成,看一下後果:
接上去我們逐一來完成響應的功效。
2. DataGrid種別查詢的完成
查詢的完成是最簡略的,在搜素框中輸出症結字,然後將症結字作為參數傳給action,然後Service從數據庫中拿出數據,打包成json格局傳到前台來顯示便可,這個進程跟後面顯示一切商品信息是一樣的,我們只須要在下面jsp中添加搜刮部門的代碼便可,其他不消轉變,添加的代碼以下:
//把通俗的文本框轉化為查詢搜刮文本框 $('#ss').searchbox({ //觸發查詢事宜 searcher:function(value,name){ //value表現輸出的值 //alert(value + "," + name) //獲得以後查詢的症結字,經由過程DataGrid加載響應的信息,應用load加載和顯示第一頁的一切行。 //假如指定了參數,它將代替'queryParams'屬性。平日可以經由過程傳遞一些參數履行一次查詢,經由過程挪用這個辦法會向下面url指定的action去發送要求,從辦事器加載新數據。 $('#dg').datagrid('load',{ type: value }); }, prompt:'請輸出搜刮症結字' });
load辦法可以加載顯示第一頁的一切行,它有個參數,假如指定了,就會去帶上麼的queryParams,不然默許傳遞下面的queryParams指定的參數,我們在這裡將type設置成value的值,即用戶輸出的查詢症結字,然後傳到action,後台依據用戶輸出的value在數據庫中查找,並前往給前台。履行成果以下:
如許我便完成了搜刮的功效了,比擬簡略。
3. DataGrid種別刪除的完成
如今我們來完成刪除功效,從下面的jsp中可以看出,刪除前斷定用戶有無選中某筆記錄,假如沒有則給用戶一個提醒,假如有選中,則彈出窗口讓用戶確認,假如為真,則履行刪除功效。有個細節要留意下,假如想要一次性刪除多筆記錄,那末下面的singleSelect屬性要設置成false。
起首,我們把下面query.jsp中刪除部門的代碼彌補完,見上面:
{ iconCls: 'icon-remove', text:'刪除種別', handler: function(){ //斷定能否有選中行記載,應用getSelections獲得選中的一切行 var rows = $("#dg").datagrid("getSelections"); //前往被選中的行,假如沒有任何行被選中,則前往空數組 if(rows.length == 0) { //彈出提醒信息 $.messager.show({ //語法相似於java中的靜態辦法,直接對象挪用 title:'毛病提醒', msg:'至多要選擇一筆記錄', timeout:2000, showType:'slide', }); } else { //提醒能否確認刪除,假如確認則履行刪除的邏輯 $.messager.confirm('刪除切實其實認對話框', '您肯定要刪除此項嗎?', function(r){ if (r){ //1. 從獲得的記載中獲得響應的的id,拼接id的值,然後發送後台1,2,3,4 var ids = ""; for(var i = 0; i < rows.length; i ++) { ids += rows[i].id + ","; } ids = ids.substr(0, ids.lastIndexOf(",")); //2. 發送ajax要求 $.post("category_deleteByIds.action",{ids:ids},function(result){ if(result == "true") { //將方才選中的記載刪除,要否則會影響前面更新的操作 $("#dg").datagrid("uncheckAll"); //刷新以後頁,查詢的時刻我們用的是load,刷新第一頁,reload是刷新以後頁 $("#dg").datagrid("reload");//不帶參數默許為下面的queryParams } else { $.messager.show({ title:'刪除異常', msg:'刪除掉敗,請檢討操作', timeout:2000, showType:'slide', }); } },"text"); } }); } } }
假如用戶選擇刪除,起首會彈出一個對話框,當用戶肯定要刪除後,我們起首要獲得用戶所勾選的商品的id,將這些id拼接成一個字符串,然後向後台發送ajax要求,$.post中的第一個參數是發送到誰人action,第二個參數是發送的參數,第三個參數是回調函數,即刪除勝利後履行該函數外面的辦法,該函數的參數result是從後台傳過去的,第四個參數無關緊要,是前往數據的類型。我們重點看看$.post中的內容,當後台前往一個"true"表現刪除勝利了,那末我們挪用DataGrid外面的reload辦法從新刷新頁面,reload和後面查詢時用的load是一樣的,分歧的處所在於reload刷新後逗留在以後頁面,而load則顯示第一頁。
好了,前台頁臉部分寫好了,接上去完成後台的響應辦法,起首在categoryService中添加deleteByIds辦法,並在其完成類categoryServceImpl中完成該辦法:
//categoryService接口 public interface CategoryService extends BaseService<Category> { //查詢種別信息,級聯治理員 public List<Category> queryJoinAccount(String type, int page, int size); //應用種別的稱號查詢 //依據症結字查詢總記載數 public Long getCount(String type); //依據ids刪除多筆記錄 public void deleteByIds(String ids); } //categoryServiceImpl完成類 @SuppressWarnings("unchecked") @Service("categoryService") public class CategoryServiceImpl extends BaseServiceImpl<Category> implements CategoryService { //其他辦法省略不寫了……可以參照後面的響應章節內容 @Override public void deleteByIds(String ids) { String hql = "delete from Category c where c.id in (" + ids + ")"; getSession().createQuery(hql).executeUpdate(); } }
寫好了Service部門,接上去開端寫Action部門了。由於我們要獲得前台傳出去的ids數據,所以在action中得有一個完成了get和set辦法的變量來吸收這個數據,別的,我們要將成果傳給前台,後面章節中我們做級聯查詢的時刻,應用的辦法是struts把查詢的成果數據打包成json格局傳給前台,所以須要一個Map,然後將經由過程設置裝備擺設文件中的設置裝備擺設,將Map轉換成json格局。這裡我們傳到前台的數據比擬簡略,入股刪除勝利我們傳一個"true"便可,所以不消打包成json格局,我們經由過程流的辦法去傳送,事理和後面的一樣,輔弼我們得有一個流的對象去保留這個"true"的字節,然後經由過程設置裝備擺設,將這個對象經由過程傳播到前台。這兩個對象我們照樣寫在BaseAction中,以下:
@Controller("baseAction") @Scope("prototype") public class BaseAction<T> extends ActionSupport implements RequestAware,SessionAware,ApplicationAware,ModelDriven<T> { //獲得要刪除的ids,要有get和set辦法 //流是用來想前台前往數據的,這個數據是讓struts獲得的,然後經由過程流的情勢傳到前台,所以完成get辦法便可 protected String ids; protected InputStream inputStream; //上面省略…… }
對應的CategoryAction中的辦法以下:
@Controller("categoryAction") @Scope("prototype") public class CategoryAction extends BaseAction<Category> { public String queryJoinAccount() { //略…… } public String deleteByIds() { System.out.println(ids); categoryService.deleteByIds(ids); //假如刪除勝利就會往下履行,我們將"true"以流的情勢傳給前台 inputStream = new ByteArrayInputStream("true".getBytes()); //將"true"的字節存到流inputStream中 return "stream"; } }
接上去看struts.xml中響應的設置裝備擺設:
<struts> <constant name="struts.devMode" value="true" /> <package name="shop" extends="json-default"><!-- jason-default繼續了struts-default --> <global-results> <result name="aindex">/WEB-INF/main/aindex.jsp</result> </global-results> <!-- class對應的是Spring中設置裝備擺設該Action的id值,由於要交給Spring治理 --> <action name="category_*" class="categoryAction" method="{1}"> <result name="jsonMap" type="json"> <!-- 略 --> </result> <result name="stream" type="stream"> <!-- 以stream的情勢,type為stream --> <param name="inputName">inputStream</param> <!-- imputStream中有要傳的數據 --> </result> </action> <action name="account_*" class="accountAction" method="{1}"> <result name="index">/index.jsp</result> </action> <!-- 用來完成體系 要求轉發的action,一切的要求都交給execute--> <action name="send_*_*" class="sendAction"> <result name="send">/WEB-INF/{1}/{2}.jsp</result> </action> </package> </struts>
如許我們就做好了刪除的操作了,看一下後果:
測試勝利,我們也能夠一次性選擇多項去刪除,至此,刪除功效做完了。
原文地址:http://blog.csdn.net/eson_15/article/details/51338991
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。