怎样在action中弹出alert,并且跳转至一个action?

_时光 发布于 2015/01/11 14:04
阅读 1K+
收藏 1

@JFinal 你好,想跟你请教个问题:怎样在action中弹出alert,并且跳转至一个action?我之前这样做:

renderHtml("<script>alert('您还没有登录!');</script>");
redirect("/blog");
结果不alert就直接跳转了;

现在这样:renderHtml("<script>alert('您还没有登录!');location.href='blog'</script>");如果blog在同一个aciton可以,但是在另一个就不行了,还得拼接路径,有没有什么好办法?

加载中
0
JFinal
JFinal

    在 action 中多次调用 render系列的方法,包括 redirect,只有最后一次调用的会生效,所以当 renderHtml以后再调用 redirect,那么前面的 renderHtml 不会起作用,结果是不 alert 只跳转。

    renderHtml("<script>alert('您还没有登录!');location.href='blog'</script>"); 需要将 location.href="blog" 中的  "blog" 改成绝对路径,带上斜杠: "/blog"。

     建议做成一个 not_login.html 页面,在这个页面中可以利用 css 样式做得更美观,体验更好,然后在这个 not_lgin.html 页面写好 javascript 做提示和跳转,提示内容和跳转的目的地可以在后端通过 setAttr(...) 来指定,也可以是用问号挂参的方式做成从哪来回哪去的跳转,例如: someAction?from=/otherAction,可以这样做:

public void someAction() {
  setAttr("toAction", getPara("from"));
  render("not_login.html");
}

页面可以这样:
function jump() {
  location.href = "${toAction}";
}



0
杨三更
杨三更
显然你需要一个构造URL的函数
_
_时光
哦哦,好的,谢谢您哈
0
_
_时光

我是这样做的:

location.href='userLogin'</script>");userLogin是当前action中的一个方法,在这个方法里在做跳转:

public void userLogin(){
    redirect("/userLogin");

}

返回顶部
顶部