SSH框架網(wǎng)上商城項(xiàng)目第11戰(zhàn)之查詢和刪除商品功能實(shí)現(xiàn)
在第8節(jié)我們完成了查詢和刪除商品類別的功能,那么現(xiàn)在實(shí)現(xiàn)查詢和刪除商品的功能就很好做了,原理和第8節(jié)一模一樣,只是修改一些參數(shù),比如請(qǐng)求不同的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' />",我們通過(guò)把普通的文本框轉(zhuǎn)化為查詢搜索文本框來(lái)實(shí)現(xiàn),下面我們?cè)趒uery.jsp中添加相應(yīng)部分的代碼:
$('#ss').searchbox({ //觸發(fā)查詢事件 searcher:function(value,name){ //value表示輸入的值 //添加觸發(fā)代碼 $('#dg').datagrid('load',{//重新load,參數(shù)name指定為用戶輸入value name: value }); }, prompt:'請(qǐng)輸入搜索關(guān)鍵字' });
測(cè)試結(jié)果如下:
查詢很簡(jiǎn)單,跟上一節(jié)load所有商品一樣,只不過(guò)查詢的時(shí)候參數(shù)設(shè)為用戶輸入的值,加載所有的時(shí)候參數(shù)設(shè)為空即可。
2. 刪除商品功能的實(shí)現(xiàn)
接下來(lái)做刪除商品功能,首先我們把query.jsp中相應(yīng)部分的代碼補(bǔ)全:
{ iconCls: 'icon-remove', text:'刪除商品', handler: function(){ //添加觸發(fā)代碼 var rows = $("#dg").datagrid("getSelections");//判斷是否有選中行記錄,使用getSelections獲取選中的所有行 //返回被選中的行,如果沒(méi)有任何行被選中,則返回空數(shù)組 if(rows.length == 0) { //彈出提示信息 $.messager.show({ //語(yǔ)法類似于java中的靜態(tài)方法,直接對(duì)象調(diào)用 title:'錯(cuò)誤提示', msg:'至少要選擇一條記錄', timeout:2000, showType:'slide', }); } else { //提示是否確認(rèn)刪除,如果確認(rèn)則執(zhí)行刪除的邏輯 $.messager.confirm('刪除的確認(rèn)對(duì)話框', '您確定要?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請(qǐng)求 $.post("product_deleteByIds.action",{ids:ids},function(result){ if(result == "true") { //將剛剛選中的記錄刪除,要不然會(huì)影響后面更新的操作 $("#dg").datagrid("uncheckAll"); //刷新當(dāng)前頁(yè),查詢的時(shí)候我們用的是load,刷新第一頁(yè),reload是刷新當(dāng)前頁(yè) $("#dg").datagrid("reload");//不帶參數(shù)默認(rèn)為上面的queryParams } else { $.messager.show({ title:'刪除異常', msg:'刪除失敗,請(qǐng)檢查操作', timeout:2000, showType:'slide', }); } },"text"); } }); } } }
從上面代碼中可以看出,刪除操作需要先選中至少一條記錄,選中后,當(dāng)確認(rèn)刪除時(shí)(即r為真),首先獲取用戶都勾選了哪些記錄,將這些記錄的id號(hào)拼接起來(lái),然后想后臺(tái)發(fā)送ajax請(qǐng)求,請(qǐng)求productAction中的deleteByIds方法,將拼接好的id作為參數(shù)帶過(guò)去,如果刪除成功,則返回一個(gè)字符串"true"到前臺(tái),然后前臺(tái)將剛剛勾選記錄清掉,以免影響后面更新操作,因?yàn)楦乱惨催x記錄,之后再刷新當(dāng)前頁(yè),reload數(shù)據(jù)庫(kù)所有商品信息。
流程很清楚明了,下面我們寫后臺(tái)程序,先從service層開(kāi)始:
public interface ProductService extends BaseService<Product> { //查詢商品信息,級(jí)聯(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(); } }
接下來(lái)完成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"就通過(guò)流傳到前臺(tái)了,接收到說(shuō)明刪除成功。看一下效果:
測(cè)試成功,至此,商品的搜索和刪除功能做完了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- php網(wǎng)上商城購(gòu)物車設(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)之商品類別級(jí)聯(lián)查詢和分頁(yè)功能
- 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二級(jí)緩存處理首頁(yè)熱門顯示
- SSH框架網(wǎng)上商城項(xiàng)目第19戰(zhàn)之訂單信息級(jí)聯(lián)入庫(kù)以及頁(yè)面緩存問(wèn)題
- SSH框架網(wǎng)上商城項(xiàng)目第20戰(zhàn)之在線支付平臺(tái)
相關(guān)文章
Java設(shè)計(jì)模式中的簡(jiǎn)單工廠模式解析
這篇文章主要介紹了Java設(shè)計(jì)模式中的簡(jiǎn)單工廠模式解析,簡(jiǎn)單工廠模式提供一個(gè)創(chuàng)建對(duì)象實(shí)例的功能,而無(wú)須關(guān)心其具體實(shí)現(xiàn),被創(chuàng)建實(shí)例的類型可以是接口、抽象類,也可以是具體的類,需要的朋友可以參考下2023-11-11淺析Java IO相關(guān)知識(shí)點(diǎn)
本篇文章給大家分享了關(guān)于java io的一些相關(guān)知識(shí)點(diǎn)以及相關(guān)內(nèi)容,對(duì)此有需要的朋友可以學(xué)習(xí)參考下。2018-05-05Java中的interrupt、interrupted和isInterrupted方法區(qū)別詳解
這篇文章主要介紹了Java中的interrupt、interrupted和isInterrupted方法區(qū)別詳解,interrupt用于中斷線程,調(diào)用該方法的線程的狀態(tài)將會(huì)被設(shè)置為中斷狀態(tài),線程中斷僅僅是設(shè)置線程的中斷狀態(tài)位,并不會(huì)停止線程,需要用戶自己去監(jiān)視線程的狀態(tài)并作出處理,需要的朋友可以參考下2023-12-12SpringBoot+Vue+Flowable模擬實(shí)現(xiàn)請(qǐng)假審批流程
這篇文章主要為大家詳細(xì)介紹了如何利用SpringBoot+Vue+Flowable模擬實(shí)現(xiàn)一個(gè)請(qǐng)假審批流程,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-08-08Springboot項(xiàng)目基于Devtools實(shí)現(xiàn)熱部署步驟詳解
這篇文章主要介紹了Springboot項(xiàng)目基于Devtools實(shí)現(xiàn)熱部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Java操作MongoDB插入數(shù)據(jù)進(jìn)行模糊查詢與in查詢功能
今天小編就為大家分享一篇關(guān)于Java操作MongoDB插入數(shù)據(jù)進(jìn)行模糊查詢與in查詢功能,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12Java實(shí)現(xiàn)將TXT文本文件轉(zhuǎn)換為PDF文件
與TXT文本文件,PDF文件更加專業(yè)也更適合傳輸,所以這篇文章小編主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)將TXT文本文件轉(zhuǎn)換為PDF文件 ,需要的可以參考下2024-02-02mybatis Example Criteria like 模糊查詢問(wèn)題
這篇文章主要介紹了mybatis Example Criteria like 模糊查詢問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Java常見(jiàn)問(wèn)題之javac Hello.java找不到文件的解決方法
剛開(kāi)始編寫java代碼時(shí),肯定會(huì)遇到各種各樣的bug,當(dāng)然對(duì)于初學(xué)者這也是能理解的,下面這篇文章主要給大家介紹了關(guān)于Java常見(jiàn)問(wèn)題之javac Hello.java找不到文件解決的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下。2018-01-01