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
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。