使用 struts 做项目时,通常在信息录入页面点击 [ 保存 ] 按钮后会跳转到一个“保存成功!”的提示页面,小小的提示会带来一些问题:

l          多设计一个页面;

l          用户多增加一步操作(特别是在信息修改页面);

l          带来页面刷新的重复提交的问题;

我们改变一下思路会带来意想不到的效果,同时也规避了以上问题。
方法一  

1、   修改你的信息录入页面,加入如下脚本

……

<iframe name="tagFrame" style="display:none" frameborder="0"></iframe>

……

<script language="JavaScript">

<!--

// 保存信息

function saveInfo() {

    testForm.action="test.do?method=save"; 

    testForm.target="tagFrame";

    testForm.submit();

}

//-->

</script>

 

 

2、   修改你的提示页面

<%@ page contentType="text/html; charset=GBK" %>

 

<script language="javascript">

    alert(" 保存成功! ");

    // 这里是等待你点击 alert 的确定按钮后跳转,神奇的 js

    parent.window.location.href='test.do?method=test';

</script>

简单改一下就 jsp 收获还不小。

方法二  
让action返回javascript完成提示和跳转:

public ActionForward execute(ActionMapping mapping,

ActionForm form, HttpServletRequest request,

            HttpServletResponse response) throws Exception {

。。。

// 发送的信息

        String msg = "alert(' 操作成功! ');location.href='test.do?method=test';";

        writeJsToFrontPage(response, msg);

 

        return null;

}


/**
     *
向前端页面发送 javascript 脚本
     *
     * @param response
     * @param text
     * @throws IOException
     */ 

protected void writeJsToFrontPage(HttpServletResponse response,

String msg) throws IOException {

        response.setContentType("text/html; charset=utf-8");

        response.setHeader("Cache-Control", "no-cache");

        PrintWriter pw = response.getWriter();

        pw.write("<SCRIPT TYPE='text/javascript'>" + msg + "</SCRIPT>");

        pw.close();

    }

 

posted on 2006-10-20 17:43 野草 阅读(2935) 评论(2)  编辑  收藏 所属分类: 2shtv

评论:
# re: struts中不让页面跳转的小方法 2009-08-27 22:58 | amado
没有明白怎么回事!不够详细  回复  更多评论
  
# re: struts中不让页面跳转的小方法[未登录] 2011-06-08 19:35 | aa
楼主能具体点不迷茫啊
谢了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: