您的位置:首页 > 其它

【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确实改变了:



至此我们的异步信息发布/停用状态更改功能完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: