NutzCN Logo
问答 初试nutz mvc 页面跳转失败
发布于 3027天前 作者 qq_041ad963 1671 次浏览 复制 上一个帖子 下一个帖子
标签:

思路是webapp/login.jsp 登陆后 跳转至WEB-INF/jsp/menu.jsp 点击事件后 ajax回调success也执行了 java类也进入了 但就是页面无跳转 也无错误 请大侠帮忙解析一下~~

login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>






idea

<title>Login</title>
<link href="css/style.css" rel="stylesheet">
<link href="css/style-responsive.css" rel="stylesheet">
<link href="css/toastr.css" rel="stylesheet"/>

<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>

<!-- <script src="js/modernizr.min.js"></script> -->
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/toastr.min.js"></script>
<script type="text/javascript">
    var base = '${base}';
    toastr.options = {
        "closeButton": false, //是否显示关闭按钮
        "debug": false, //是否使用debug模式
        "positionClass": "toast-top-full-width",//弹出窗的位置
        "showDuration": "300",//显示的动画时间f
        "hideDuration": "1000",//消失的动画时间
        "timeOut": "5000", //展现时间
        "extendedTimeOut": "1000",//加长展示时间
        "showEasing": "swing",//显示时的动画缓冲方式
        "hideEasing": "linear",//消失时的动画缓冲方式
        "showMethod": "fadeIn",//显示时的动画方式
        "hideMethod": "fadeOut" //消失时的动画方式
    };

    jQuery(document).ready(function ($) {
        $("#login").click(function () {
            var params = $('input').serialize(); //序列化表单的值
            $.ajax({
                data: {
                    username: username,
                    password: password
                },
                type: "POST",
                //dataType: 'json',
                async: false,
                url: "login/sayMore",
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alert(XMLHttpRequest.status);
                    alert(XMLHttpRequest.readyState);
                    alert(textStatus);
                },
                success:function(){
                    alert("跳转成功");
                    window.location.href = "menu.jsp";
                }

            });
        })
    })
</script>





YXY Login




        <button class="btn btn-lg btn-login btn-block" type="submit" id="login">
            <i class="fa fa-check"></i>
        </button>
    </div>
</form>



menu.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


Title


成功了

java程序

@At("/login")
public class LoginController {

@At
@Ok("jsp:jsp.menu")
public void  sayMore(@Param("username") String username,
                    @Param("password") String password, HttpSession session) {
    System.out.println("方法已进入");
}

}

9 回复

直接贴html会被抹掉的.

@wendal 好吧。。。那抛开被抹掉的html java那用@ok可以直接跳转到该jsp吗? 还是我jQuery那写的不对啊

@qq_041ad963 重新贴

来自炫酷的 NutzCN

login.jsp    
<script type="text/javascript">
        var base = '${base}';
        toastr.options = {
            "closeButton": false, //是否显示关闭按钮
            "debug": false, //是否使用debug模式
            "positionClass": "toast-top-full-width",//弹出窗的位置
            "showDuration": "300",//显示的动画时间f
            "hideDuration": "1000",//消失的动画时间
            "timeOut": "5000", //展现时间
            "extendedTimeOut": "1000",//加长展示时间
            "showEasing": "swing",//显示时的动画缓冲方式
            "hideEasing": "linear",//消失时的动画缓冲方式
            "showMethod": "fadeIn",//显示时的动画方式
            "hideMethod": "fadeOut" //消失时的动画方式
        };

        jQuery(document).ready(function ($) {

            $("#login").click(function () {
                var username = $("#username").val();
                var password = $("#password").val();

                var params = $('input').serialize(); //序列化表单的值
                $.ajax({
                    data: {
                        username: username,
                        password: password
                    },
                    type: "POST",
                    //dataType: 'json',
                    async: false,
                    url: "login/sayMore",
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    },
                    success:function(){
                        alert("跳转成功");
                        window.location.href = "menu.jsp";
                    }
                });
            })
        })
    </script>

menu.jsp
没什么东西

java类
@At("/login")
public class LoginController {

    @Inject
    protected Dao dao;

    @At
    @Ok("jsp:jsp.menu")
    public void  sayMore(@Param("username") String username,
                        @Param("password") String password, HttpSession session) {

        System.out.println("方法已进入");
    }

}

@wendal 已经贴了

@qq_041ad963 弹出 跳转成功 了没?

来自炫酷的 NutzCN

@wendal 恩 奇怪的是 确实alert出来了 页面就是没跳转到menu 也不出错 画面就刷一下就完事了。。。

那是因为你的login根本没真正登陆, 先重定向到menu.jsp这个URL, 然后又被拦截(因为没登陆), 又重定向回登陆页面.

看页面上方导航条的"新手入门", 别瞎折腾了.

@wendal 我并没有加入类似shiro这类的 或者往session中加参数验证登录与否 就是单纯的想A画面->B画面而已啊 虽然叫login画面 但没有实质的验证啊
单纯的画面跳转用【@Ok("jsp:jsp.menu")】就可以了吗?【window.location.href = "menu.jsp";】就可以不用了吧

jsp视图是内部跳转, 浏览器URL不会变的.

对接ajax请求的话, 一般写

@Ok("json:full")

然后js里面根据登陆结果进行跳转

添加回复
请先登陆
回到顶部