【SSH项目实战】国税协同平台-20.异步信息发布
2015-12-11 16:32
399 查看
我们上次发表文章之后有一个“停用”和“发布”状态,
但是我们没有去做它的切换,所以在这里我们要用异步信息传输的方式去完成这个切换功能。
最后我们要的效果是点击“停用”或者“启用”的时候,在“状态”一栏会切换成“停用”或者“启用”。效果大概如此图:
我们使用Ajax异步处理这个操作。下面编码实现:
首先是在超链接部分添加判断,转向js方法doPublic(var id,var state),参数就是现在这个要改变状态的用户的id以及需要变成的状态。
[html] view
plaincopy
<td id="show_<s:property value='infoId'/>" align="center"><s:property value="state==1?'发布':'停用'"/></td>
<td align="center">
<span id="oper_<s:property value='infoId'/>">
<s:if test="state==1">
<a href="javascript:doPublic('<s:property value='infoId'/>',0)">停用</a>
</s:if><s:else>
<a href="javascript:doPublic('<s:property value='infoId'/>',1)">发布</a>
</s:else>
</span>
<a href="javascript:doEdit('<s:property value='infoId'/>')">编辑</a>
<a href="javascript:doDelete('<s:property value='infoId'/>')">删除
</a>
</td>
doPublic这个javascript方法详细:
[javascript] view
plaincopy
//异步发布信息,信息的id以及将要改成的状态值
function doPublic(infoId,state){
//1.更新信息状态
$.ajax({
url:"${basePath}tax/info_publicInfo.action",
data:{"info.infoId":infoId,"info.state":state},
type:"post",
success:function(msg){
//2.更新状态栏,操作栏的显示值
if("更新状态成功"==msg){
if(state==1){
//说明信息状态已经被改成发布,操作栏被改为停用
$("#show_"+infoId).html("发布");
$("#oper_"+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',0)">停用</a>');
}else{
$("#show_"+infoId).html("停用");
$("#oper_"+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',1)">发布</a>');
}
}else{
alert("更新信息状态失败!");
}
},
error:function(){
alert("更新信息状态失败!");
}
});
}
现在只差实现info_publicInfo.action方法:
在InfoAction中添加下面的方法
[java] view
plaincopy
//异步发布信息
public void publicInfo(){
try {
if (info != null) {
//1.更新信息状态
Info tem = infoService.findObjectById(info.getInfoId());
tem.setState(info.getState());
infoService.update(tem);
//2.输出更新结果
HttpServletResponse response = ServletActionContext
.getResponse();
response.setContentType("text/html");
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write("更新状态成功".getBytes("utf-8"));
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
下面我们来测试:
首先我们的状态是“发布”,我们点击停用:
然后结果:
发现我们的状态已经改变
那么,到我们的数据库中查看,发现我们的state确实改变了:
至此我们的异步信息发布/停用状态更改功能完成!
但是我们没有去做它的切换,所以在这里我们要用异步信息传输的方式去完成这个切换功能。
最后我们要的效果是点击“停用”或者“启用”的时候,在“状态”一栏会切换成“停用”或者“启用”。效果大概如此图:
我们使用Ajax异步处理这个操作。下面编码实现:
首先是在超链接部分添加判断,转向js方法doPublic(var id,var state),参数就是现在这个要改变状态的用户的id以及需要变成的状态。
[html] view
plaincopy
<td id="show_<s:property value='infoId'/>" align="center"><s:property value="state==1?'发布':'停用'"/></td>
<td align="center">
<span id="oper_<s:property value='infoId'/>">
<s:if test="state==1">
<a href="javascript:doPublic('<s:property value='infoId'/>',0)">停用</a>
</s:if><s:else>
<a href="javascript:doPublic('<s:property value='infoId'/>',1)">发布</a>
</s:else>
</span>
<a href="javascript:doEdit('<s:property value='infoId'/>')">编辑</a>
<a href="javascript:doDelete('<s:property value='infoId'/>')">删除
</a>
</td>
doPublic这个javascript方法详细:
[javascript] view
plaincopy
//异步发布信息,信息的id以及将要改成的状态值
function doPublic(infoId,state){
//1.更新信息状态
$.ajax({
url:"${basePath}tax/info_publicInfo.action",
data:{"info.infoId":infoId,"info.state":state},
type:"post",
success:function(msg){
//2.更新状态栏,操作栏的显示值
if("更新状态成功"==msg){
if(state==1){
//说明信息状态已经被改成发布,操作栏被改为停用
$("#show_"+infoId).html("发布");
$("#oper_"+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',0)">停用</a>');
}else{
$("#show_"+infoId).html("停用");
$("#oper_"+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',1)">发布</a>');
}
}else{
alert("更新信息状态失败!");
}
},
error:function(){
alert("更新信息状态失败!");
}
});
}
现在只差实现info_publicInfo.action方法:
在InfoAction中添加下面的方法
[java] view
plaincopy
//异步发布信息
public void publicInfo(){
try {
if (info != null) {
//1.更新信息状态
Info tem = infoService.findObjectById(info.getInfoId());
tem.setState(info.getState());
infoService.update(tem);
//2.输出更新结果
HttpServletResponse response = ServletActionContext
.getResponse();
response.setContentType("text/html");
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write("更新状态成功".getBytes("utf-8"));
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
下面我们来测试:
首先我们的状态是“发布”,我们点击停用:
然后结果:
发现我们的状态已经改变
那么,到我们的数据库中查看,发现我们的state确实改变了:
至此我们的异步信息发布/停用状态更改功能完成!
相关文章推荐
- C++第11版本中的一些强大的新特性小结
- 【SSH项目实战】国税协同平台-21.PowerDesigner概念、物理模型
- 【SSH项目实战】国税协同平台-22.逆向工程
- 模块化编程
- iOS 安全攻防系列(一):获取手机联系人
- 2015第50周五
- maven的pom文件报plugins找不到
- DELL R720 安装windows 2008 过程记录
- 【SSH项目实战】国税协同平台-23.抽取BaseService
- sqlserver 2008安装好后,无法连接到本地数据库
- 【SSH项目实战】国税协同平台-24.条件查询分析与实现
- windows 如何查看端口占用情况?
- android - Hybrid App
- IOS开发之实现App消息推送(最新)
- 基于暗通道去雾算法的实现与优化(一)
- java关于static粗陋见解
- Linux驱动模型分析之platform
- Windows 版 Apache2 多网站
- 安装nodejs时提示Leaving directory
- 正则表达式排除特定字符串