Thymleaf如何实现JSTL对httpsession中对象的空值判断

发布于 2022-09-07 03:57:52 字数 3542 浏览 11 评论 0

<c:choose>
            <c:when test="${empty login}">
                <li><a href="../index/loginUI.do"><i class="fa fa-user"></i>注册/登录</a>
                </li>
            </c:when>
            <c:otherwise>
                <li><a href="../index/mycenter.do"><i class="fa fa-user"></i>个人中心</a></li>
                <li><a href="../index/logout.do"><i class="fa fa-user"></i>退出登录</a>
                </li>
            </c:otherwise>
        </c:choose>

这是我在JSTL中写的,可以成功运行,无任何异常

 <li><a th:href="@{/login/loginUI}" th:if="${#httpSession.login}eq null"><i class="fa fa-user-md"></i>管理员登陆</a>
            </li>
            <li><a th:href="@{/index/loginUI}" th:if="${#httpSession.login}eq null"><i class="fa fa-user"></i>注册/登录</a>
            </li>
            <li><a th:href="@{/index/mycenter}" th:unless="${#httpSession.login} eq null"><i class="fa fa-user"></i>个人中心</a></li>
            <li><a th:href="@{/index/logout}" th:if="${#httpSession.login} ne null"><i class="fa fa-user"></i>退出登录</a>
            </li>

但是我在thymleaf中使用时总是无法找到login

然后是我的java代码

 @RequestMapping("/index")
    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {
        Page page = new Page("filter_form");
        page.setPageSize(8);
        String currentPage = request.getParameter("page.currentPage");
        if (StringUitl.IsNotNull(currentPage)) {
            page.setCurrentPage(Integer.parseInt(currentPage));
        }
        //拼装map进行查询
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("page", page);
        List list = changguanService.getForPage(map);
        //展示的数据
        request.setAttribute("list", list);
        request.setAttribute("paging", page.getPageStr());
        System.out.println(page.getPageStr());
        return new ModelAndView("index/index");
    }
 @RequestMapping("/login")
    public void login(HttpServletRequest request, HttpServletResponse response, HttpSession httpSession) throws IOException {
        String pwd = request.getParameter("pwd");
        String no = request.getParameter("no");
        response.setCharacterEncoding("utf-8");
        Login login = (Login) httpSession.getAttribute("login");
        if (login == null) {
            User user = userService.checkUserNo(no, pwd);
            if (user == null) {
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().write("<script>alert('账号密码错误');</script>");
                response.getWriter().write("<script> window.location='../index/index' ;window.close();</script>");
                response.getWriter().flush();
            }
            login = new Login(user.getId(), user.getName(), "user", "");
            httpSession.setAttribute("login", login);
        }
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("<script>alert('登录成功');</script>");
        response.getWriter().write("<script> window.location='../index/index' ;window.close();</script>");
        response.getWriter().flush();
    }

请问thymleaf如何才能实现jstl的这种直接判断未创建对象的空值问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最冷一天 2022-09-14 03:57:52

过于执着httpsession的类型,仔细阅读了文档,发现session.login就可以直接拿到值

        <li><a th:href="@{/login/loginUI}" th:unless="${session.login} ne null"><i class="fa fa-user-md"></i>管理员登陆</a>
    </li>
        <li><a th:href="@{/index/loginUI}" th:unless="${session.login} ne null"><i class="fa fa-user"></i>注册/登录</a>
        </li>
        <li><a th:href="@{/index/mycenter}" th:if="${session.login}"><i class="fa fa-user"></i>个人中心</a></li>
        <li><a th:href="@{/index/logout}" th:if="${session.login}"><i class="fa fa-user"></i>退出登录</a>
        </li>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文