您的位置:首页 > 其它

【SSH网上商城项目实战11】查询和删除商品功能的实现

2017-01-12 18:05 976 查看
目录(?)[+]
查询商品功能的实现
删除商品功能的实现

在第8节我们完成了查询和删除商品类别的功能,那么现在实现查询和删除商品的功能就很好做了,原理和第8节一模一样,只是修改一些参数,比如请求不同的action等。由于查询和删除商品不需要弹出新的UI窗口,所以我们只要完成完成query.jsp中相应的部分以及相应的后台即可。

1. 查询商品功能的实现

查询功能主要在查询框中实现,从上一节可知,查询框用的是一个text:”<input id=’ss’ name=’serach’ />”,我们通过把普通的文本框转化为查询搜索文本框来实现,下面我们在query.jsp中添加相应部分的代码:

[javascript] view plain copy print?



(</span><span class="string">'#ss'</span><span>).searchbox({   </span></span></li><li class=""><span>    <span class="comment">//触发查询事件</span><span>  </span></span></li><li class="alt"><span>    searcher:<span class="keyword">function</span><span>(value,name){ </span><span class="comment">//value表示输入的值</span><span>  </span></span></li><li class=""><span>        <span class="comment">//添加触发代码</span><span>  </span></span></li><li class="alt"><span>          </span></li><li class=""><span>        $(<span class="string">'#dg'</span><span>).datagrid(</span><span class="string">'load'</span><span>,{</span><span class="comment">//重新load,参数name指定为用户输入value</span><span>  </span></span></li><li class="alt"><span>            name: value  </span></li><li class=""><span>        });  </span></li><li class="alt"><span>  </span></li><li class=""><span>    },   </span></li><li class="alt"><span>    prompt:<span class="string">'请输入搜索关键字'</span><span>   </span></span></li><li class=""><span>});   </span></li></ol><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="https://oscdn.geek-share.com/Uploads/Images/Content/201701/9cc493f1e15b23d0f4eaea0d0f8b35d0.png"></a></div></div><pre code_snippet_id="1680342" snippet_file_name="blog_20160512_1_8965249" name="code" class="javascript" style="display: none;">(‘#ss’).searchbox({
//触发查询事件
searcher:function(value,name){ //value表示输入的值
//添加触发代码

$(‘#dg’).datagrid(‘load’,{//重新load,参数name指定为用户输入value
name: value
});

},
prompt:’请输入搜索关键字’
}); 测试结果如下:



查询很简单,跟上一节load所有商品一样,只不过查询的时候参数设为用户输入的值,加载所有的时候参数设为空即可。

2. 删除商品功能的实现

接下来做删除商品功能,首先我们把query.jsp中相应部分的代码补全:

[javascript] view plain copy print?



{
iconCls: ’icon-remove’,
text:’删除商品’,
handler: function(){
//添加触发代码

var rows = (</span><span class="string">"#dg"</span><span>).datagrid(</span><span class="string">"getSelections"</span><span>);</span><span class="comment">//判断是否有选中行记录,使用getSelections获取选中的所有行</span><span>  </span></span></li><li class=""><span>        <span class="comment">//返回被选中的行,如果没有任何行被选中,则返回空数组</span><span>  </span></span></li><li class="alt"><span>        <span class="keyword">if</span><span>(rows.length == 0) {  </span></span></li><li class=""><span>            <span class="comment">//弹出提示信息</span><span>  </span></span></li><li class="alt"><span>            .messager.show({ <span class="comment">//语法类似于java中的静态方法,直接对象调用</span><span>  </span></span></li><li class=""><span>                title:<span class="string">'错误提示'</span><span>,  </span></span></li><li class="alt"><span>                msg:<span class="string">'至少要选择一条记录'</span><span>,  </span></span></li><li class=""><span>                timeout:2000,  </span></li><li class="alt"><span>                showType:<span class="string">'slide'</span><span>,  </span></span></li><li class=""><span>            });  </span></li><li class="alt"><span>        } <span class="keyword">else</span><span> {  </span></span></li><li class=""><span>            <span class="comment">//提示是否确认删除,如果确认则执行删除的逻辑</span><span>  </span></span></li><li class="alt"><span>            .messager.confirm(<span class="string">'删除的确认对话框'</span><span>, </span><span class="string">'您确定要删除此项吗?'</span><span>, </span><span class="keyword">function</span><span>(r){  </span></span></li><li class=""><span>                <span class="keyword">if</span><span> (r){  </span></span></li><li class="alt"><span>                    <span class="comment">//1. 从获取的记录中获取相应的的id,拼接id的值,然后发送后台1,2,3,4</span><span>  </span></span></li><li class=""><span>                    <span class="keyword">var</span><span> ids = </span><span class="string">""</span><span>;  </span></span></li><li class="alt"><span>                    <span class="keyword">for</span><span>(</span><span class="keyword">var</span><span> i = 0; i < rows.length; i ++) {  </span></span></li><li class=""><span>                        ids += rows[i].id + <span class="string">","</span><span>;  </span></span></li><li class="alt"><span>                    }  </span></li><li class=""><span>                    ids = ids.substr(0, ids.lastIndexOf(<span class="string">","</span><span>));  </span></span></li><li class="alt"><span>                    <span class="comment">//2. 发送ajax请求</span><span>  </span></span></li><li class=""><span>                    .post(<span class="string">"product_deleteByIds.action"</span><span>,{ids:ids},</span><span class="keyword">function</span><span>(result){  </span></span></li><li class="alt"><span>                        <span class="keyword">if</span><span>(result == </span><span class="string">"true"</span><span>) {  </span></span></li><li class=""><span>                            <span class="comment">//将刚刚选中的记录删除,要不然会影响后面更新的操作</span><span>  </span></span></li><li class="alt"><span>                            (<span class="string">"#dg"</span><span>).datagrid(</span><span class="string">"uncheckAll"</span><span>);  </span></span></li><li class=""><span>                            <span class="comment">//刷新当前页,查询的时候我们用的是load,刷新第一页,reload是刷新当前页</span><span>  </span></span></li><li class="alt"><span>                            (<span class="string">"#dg"</span><span>).datagrid(</span><span class="string">"reload"</span><span>);</span><span class="comment">//不带参数默认为上面的queryParams     </span><span>  </span></span></li><li class=""><span>                        } <span class="keyword">else</span><span> {  </span></span></li><li class="alt"><span>                            $.messager.show({
title:’删除异常’,
msg:’删除失败,请检查操作’,
timeout:2000,
showType:’slide’,
});
}
},”text”);
}
});
}
}
}


{
iconCls: 'icon-remove',
text:'删除商品',
handler: function(){
//添加触发代码

var rows = $("#dg").datagrid("getSelections");//判断是否有选中行记录,使用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("product_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");
}
});
}
}
}
从上面代码中可以看出,删除操作需要先选中至少一条记录,选中后,当确认删除时(即r为真),首先获取用户都勾选了哪些记录,将这些记录的id号拼接起来,然后想后台发送ajax请求,请求productAction中的deleteByIds方法,将拼接好的id作为参数带过去,如果删除成功,则返回一个字符串”true”到前台,然后前台将刚刚勾选记录清掉,以免影响后面更新操作,因为更新也要勾选记录,之后再刷新当前页,reload数据库所有商品信息。

流程很清楚明了,下面我们写后台程序,先从service层开始:

[java] view plain copy print?



public interface ProductService extends BaseService<Product> {

//查询商品信息,级联类别
public List<Product> queryJoinCategory(String type, int page, int size); //使用商品的名称查询
//根据关键字查询总记录数
public Long getCount(String type);
//根据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();
}

}


public interface ProductService extends BaseService<Product> {

//查询商品信息,级联类别
public List<Product> queryJoinCategory(String type, int page, int size); //使用商品的名称查询
//根据关键字查询总记录数
public Long getCount(String type);
//根据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方法:

[java] view plain copy print?



@Controller(“productAction”)
@Scope(“prototype”)
public class ProductAction extends BaseAction<Product> {

//省略其他代码……

public String deleteByIds() {
System.out.println(ids);
productService.deleteByIds(ids);
//如果删除成功就会往下执行,我们将”true”以流的形式传给前台
inputStream = new ByteArrayInputStream(“true”.getBytes());
return “stream”;
}
}


@Controller("productAction")
@Scope("prototype")
public class ProductAction extends BaseAction<Product> {

//省略其他代码……

public String deleteByIds() {
System.out.println(ids);
productService.deleteByIds(ids);
//如果删除成功就会往下执行,我们将"true"以流的形式传给前台
inputStream = new ByteArrayInputStream("true".getBytes());
return "stream";
}
}
和之前删除商品类的思路相同,下面在struts.xml中配置:

[html] view plain copy print?



<action name=“product_*” class=“productAction” method=“{1}”>
<!– 省略其他配置 –>
<result name=“stream” type=“stream”>
<param name=“inputName”>inputStream</param>
</result>
</action>


<action name="product_*" class="productAction" method="{1}">
<!-- 省略其他配置 -->
<result name="stream" type="stream">
<param name="inputName">inputStream</param>
</result>
</action>
这样字符串”true”就通过流传到前台了,接收到说明删除成功。看一下效果:





测试成功,至此,商品的搜索和删除功能做完了。

相关阅读:http://blog.csdn.net/column/details/str2hiberspring.html

整个项目的源码下载地址:http://blog.csdn.NET/eson_15/article/details/51479994

_____________________________________________________________________________________________________________________________________________________

—–乐于分享,共同进步!

—–更多文章请看:http://blog.csdn.net/eson_15








document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000)

<div id="digg" articleid="51360804">
<dl id="btnDigg" class="digg digg_enable" onclick="btndigga();">

<dt>顶</dt>
<dd>5</dd>
</dl>

<dl id="btnBury" class="digg digg_enable" onclick="btnburya();">

<dt>踩</dt>
<dd>0</dd>
</dl>

</div>
<div class="tracking-ad" data-mod="popu_222"><a href="javascript:void(0);" target="_blank"> </a>   </div>
<div class="tracking-ad" data-mod="popu_223"> <a href="javascript:void(0);" target="_blank"> </a></div>
<script type="text/javascript">
function btndigga() {
$(".tracking-ad[data-mod='popu_222'] a").click();
}
function btnburya() {
$(".tracking-ad[data-mod='popu_223'] a").click();
}
</script>


上一篇让你的情商爆棚吧~

下一篇Hibernate4执行save()或update()无效

<div style="clear:both; height:10px;"></div>

<div class="similar_article" style="">
<h4>我的同类文章</h4>
<div class="similar_c" style="margin:20px 0px 0px 0px">
<div class="similar_c_t">
<label class="similar_cur">
<span style="cursor:pointer" onclick="GetCategoryArticles('6228419','eson_15','foot','51360804');">●  项目实战<em>(29)</em></span>
</label>
<label class="">
<span style="cursor:pointer" onclick="GetCategoryArticles('6214186','eson_15','foot','51360804');">------【SSH网上商城】<em>(29)</em></span>
</label>
</div>

<div class="similar_wrap tracking-ad" data-mod="popu_141" style="max-height:195px;">
<a href="http://blog.csdn.net" style="display:none" target="_blank">http://blog.csdn.net</a>
<ul class="similar_list fl"><li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51506334" id="foot_aritcle_51506334undefined2647217465401688" target="_blank" title="【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表">【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表</a><span>2016-05-26</span><label><i>阅读</i><b>6059</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51484247" id="foot_aritcle_51484247undefined8400745997023646" target="_blank" title="【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布">【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布</a><span>2016-05-23</span><label><i>阅读</i><b>13823</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51475431" id="foot_aritcle_51475431undefined8512284170273314" target="_blank" title="【SSH网上商城项目实战26】完成订单支付后的短信发送功能">【SSH网上商城项目实战26】完成订单支付后的短信发送功能</a><span>2016-05-22</span><label><i>阅读</i><b>4704</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51465067" id="foot_aritcle_51465067undefined019788730990534464" target="_blank" title="【SSH网上商城项目实战24】Struts2中如何处理多个Model请求">【SSH网上商城项目实战24】Struts2中如何处理多个Model请求</a><span>2016-05-21</span><label><i>阅读</i><b>4245</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51452243" id="foot_aritcle_51452243undefined5534290939538609" target="_blank" title="【SSH网上商城项目实战22】获取银行图标以及支付页面的显示">【SSH网上商城项目实战22】获取银行图标以及支付页面的显示</a><span>2016-05-19</span><label><i>阅读</i><b>3742</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51441431" id="foot_aritcle_51441431undefined03940324393817285" target="_blank" title="【SSH网上商城项目实战20】在线支付平台的介绍">【SSH网上商城项目实战20】在线支付平台的介绍</a><span>2016-05-18</span><label><i>阅读</i><b>4107</b></label></li> </ul>

<ul class="similar_list fr"><li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51487323" id="foot_aritcle_51487323undefined6179416114102185" target="_blank" title="【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价">【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价</a><span>2016-05-24</span><label><i>阅读</i><b>5337</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51479994" id="foot_aritcle_51479994undefined18975424520414164" target="_blank" title="【SSH网上商城项目实战30】项目总结(附源码下载地址)">【SSH网上商城项目实战30】项目总结(附源码下载地址)</a><span>2016-05-27</span><label><i>阅读</i><b>21890</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51475046" id="foot_aritcle_51475046undefined25904446667646175" target="_blank" title="【SSH网上商城项目实战25】使用java email给用户发送邮件">【SSH网上商城项目实战25】使用java email给用户发送邮件</a><span>2016-05-22</span><label><i>阅读</i><b>4007</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51464415" id="foot_aritcle_51464415undefined721745135953638" target="_blank" title="【SSH网上商城项目实战23】完成在线支付功能">【SSH网上商城项目实战23】完成在线支付功能</a><span>2016-05-20</span><label><i>阅读</i><b>8822</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/eson_15/article/details/51447492" id="foot_aritcle_51447492undefined22074516001132438" target="_blank" title="【SSH网上商城项目实战21】从Demo中看易宝支付的流程">【SSH网上商城项目实战21】从Demo中看易宝支付的流程</a><span>2016-05-18</span><label><i>阅读</i><b>9653</b></label></li> </ul>
<a href="http://blog.csdn.net/eson_15/article/category/6228419" class="MoreArticle">更多文章</a></div>
</div>
</div>
<script type="text/javascript">
$(function () {
GetCategoryArticles('6228419', 'eson_15','foot','51360804');
});
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  商城