SSH框架網(wǎng)上商城項(xiàng)目第11戰(zhàn)之查詢和刪除商品功能實(shí)現(xiàn)
在第8節(jié)我們完成了查詢和刪除商品類別的功能,那么現(xiàn)在實(shí)現(xiàn)查詢和刪除商品的功能就很好做了,原理和第8節(jié)一模一樣,只是修改一些參數(shù),比如請求不同的action等。由于查詢和刪除商品不需要彈出新的UI窗口,所以我們只要完成完成query.jsp中相應(yīng)的部分以及相應(yīng)的后臺(tái)即可。
1. 查詢商品功能的實(shí)現(xiàn)
查詢功能主要在查詢框中實(shí)現(xiàn),從上一節(jié)可知,查詢框用的是一個(gè)text:"<input id='ss' name='serach' />",我們通過把普通的文本框轉(zhuǎn)化為查詢搜索文本框來實(shí)現(xiàn),下面我們在query.jsp中添加相應(yīng)部分的代碼:
$('#ss').searchbox({
//觸發(fā)查詢事件
searcher:function(value,name){ //value表示輸入的值
//添加觸發(fā)代碼
$('#dg').datagrid('load',{//重新load,參數(shù)name指定為用戶輸入value
name: value
});
},
prompt:'請輸入搜索關(guān)鍵字'
});
測試結(jié)果如下:

查詢很簡單,跟上一節(jié)load所有商品一樣,只不過查詢的時(shí)候參數(shù)設(shè)為用戶輸入的值,加載所有的時(shí)候參數(shù)設(shè)為空即可。
2. 刪除商品功能的實(shí)現(xiàn)
接下來做刪除商品功能,首先我們把query.jsp中相應(yīng)部分的代碼補(bǔ)全:
{
iconCls: 'icon-remove',
text:'刪除商品',
handler: function(){
//添加觸發(fā)代碼
var rows = $("#dg").datagrid("getSelections");//判斷是否有選中行記錄,使用getSelections獲取選中的所有行
//返回被選中的行,如果沒有任何行被選中,則返回空數(shù)組
if(rows.length == 0) {
//彈出提示信息
$.messager.show({ //語法類似于java中的靜態(tài)方法,直接對象調(diào)用
title:'錯(cuò)誤提示',
msg:'至少要選擇一條記錄',
timeout:2000,
showType:'slide',
});
} else {
//提示是否確認(rèn)刪除,如果確認(rèn)則執(zhí)行刪除的邏輯
$.messager.confirm('刪除的確認(rèn)對話框', '您確定要?jiǎng)h除此項(xiàng)嗎?', function(r){
if (r){
//1. 從獲取的記錄中獲取相應(yīng)的的id,拼接id的值,然后發(fā)送后臺(tái)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. 發(fā)送ajax請求
$.post("product_deleteByIds.action",{ids:ids},function(result){
if(result == "true") {
//將剛剛選中的記錄刪除,要不然會(huì)影響后面更新的操作
$("#dg").datagrid("uncheckAll");
//刷新當(dāng)前頁,查詢的時(shí)候我們用的是load,刷新第一頁,reload是刷新當(dāng)前頁
$("#dg").datagrid("reload");//不帶參數(shù)默認(rèn)為上面的queryParams
} else {
$.messager.show({
title:'刪除異常',
msg:'刪除失敗,請檢查操作',
timeout:2000,
showType:'slide',
});
}
},"text");
}
});
}
}
}
從上面代碼中可以看出,刪除操作需要先選中至少一條記錄,選中后,當(dāng)確認(rèn)刪除時(shí)(即r為真),首先獲取用戶都勾選了哪些記錄,將這些記錄的id號拼接起來,然后想后臺(tái)發(fā)送ajax請求,請求productAction中的deleteByIds方法,將拼接好的id作為參數(shù)帶過去,如果刪除成功,則返回一個(gè)字符串"true"到前臺(tái),然后前臺(tái)將剛剛勾選記錄清掉,以免影響后面更新操作,因?yàn)楦乱惨催x記錄,之后再刷新當(dāng)前頁,reload數(shù)據(jù)庫所有商品信息。
流程很清楚明了,下面我們寫后臺(tái)程序,先從service層開始:
public interface ProductService extends BaseService<Product> {
//查詢商品信息,級聯(lián)類別
public List<Product> queryJoinCategory(String type, int page, int size); //使用商品的名稱查詢
//根據(jù)關(guān)鍵字查詢總記錄數(shù)
public Long getCount(String type);
//根據(jù)ids刪除多條記錄
public void deleteByIds(String ids);
}
@SuppressWarnings("unchecked")
@Service("productService")
public class ProductServiceImpl extends BaseServiceImpl<Product> implements ProductService {
//省略其他代碼……
@Override
public void deleteByIds(String ids) {
String hql = "delete from Product p where p.id in (" + ids + ")";
getSession().createQuery(hql).executeUpdate();
}
}
接下來完成productAction中的deleteByIds方法:
@Controller("productAction")
@Scope("prototype")
public class ProductAction extends BaseAction<Product> {
//省略其他代碼……
public String deleteByIds() {
System.out.println(ids);
productService.deleteByIds(ids);
//如果刪除成功就會(huì)往下執(zhí)行,我們將"true"以流的形式傳給前臺(tái)
inputStream = new ByteArrayInputStream("true".getBytes());
return "stream";
}
}
和之前刪除商品類的思路相同,下面在struts.xml中配置:
<action name="product_*" class="productAction" method="{1}">
<!-- 省略其他配置 -->
<result name="stream" type="stream">
<param name="inputName">inputStream</param>
</result>
</action>
這樣字符串"true"就通過流傳到前臺(tái)了,接收到說明刪除成功。看一下效果:


測試成功,至此,商品的搜索和刪除功能做完了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- php網(wǎng)上商城購物車設(shè)計(jì)代碼分享
- PHP實(shí)現(xiàn)的交通銀行網(wǎng)銀在線支付接口ECSHOP插件和使用例子
- SSH框架網(wǎng)上商城項(xiàng)目第1戰(zhàn)之整合Struts2、Hibernate4.3和Spring4.2
- SSH框架網(wǎng)上商城項(xiàng)目第5戰(zhàn)之商品類別級聯(lián)查詢和分頁功能
- SSH框架網(wǎng)上商城項(xiàng)目第7戰(zhàn)之整合Struts2和Json
- SSH框架網(wǎng)上商城項(xiàng)目第8戰(zhàn)之查詢和刪除商品類別功能實(shí)現(xiàn)
- SSH框架網(wǎng)上商城項(xiàng)目第10戰(zhàn)之搭建商品類基本模塊
- SSH框架網(wǎng)上商城項(xiàng)目第16戰(zhàn)之Hibernate二級緩存處理首頁熱門顯示
- SSH框架網(wǎng)上商城項(xiàng)目第19戰(zhàn)之訂單信息級聯(lián)入庫以及頁面緩存問題
- SSH框架網(wǎng)上商城項(xiàng)目第20戰(zhàn)之在線支付平臺(tái)
相關(guān)文章
詳解Java編寫算法時(shí)如何加快讀寫數(shù)據(jù)速度
這篇文章主要為大家詳細(xì)介紹了Java在編寫算法時(shí)如何加快讀寫數(shù)據(jù)速度,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
java并發(fā)包中CountDownLatch和線程池的使用詳解
這篇文章主要介紹了java并發(fā)包中CountDownLatch和線程池的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
spring?controller層引用service報(bào)空指針異常nullpointExceptio問題
這篇文章主要介紹了spring?controller層引用service報(bào)空指針異常nullpointExceptio問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
java留言管理系統(tǒng)中模糊查詢實(shí)例分享
這篇文章主要為大家詳細(xì)介紹了基于MVC+DAO的留言管理系統(tǒng)中java模糊查詢的簡單使用方法,感興趣的小伙伴們可以參考一下2016-04-04
java實(shí)現(xiàn)后臺(tái)返回base64圖形編碼
這篇文章主要介紹了java實(shí)現(xiàn)后臺(tái)返回base64圖形編碼,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
java實(shí)現(xiàn)后臺(tái)圖片跨域上傳功能
這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)后臺(tái)圖片跨域上傳功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

