隐藏列表项基于布尔值true false jsp

Hide list item based on boolean true false jsp

本文关键字:true false jsp 于布尔 列表 隐藏      更新时间:2023-09-26

我有一个幻灯片菜单在我的jsp页面和登录后,我检查用户是否被允许查看元素或不从存储在数据库中的参数。我需要根据用户是否被允许查看来隐藏项目。

我jsp

<ul  style = "display:none">
<li><a href="servletName">MyfirstSubmenu</a></li>
<li><a href="servletName1">MyfirstSubmenu1</a></li>
</ul>

我的dao:提取:

public boolean userallowed(username, itemid){
..........................
return true;
}

my servlet extract:

if(userallowed(username, itemid)){
  session.setAttribute("userallowed", true);
  request.getRequestDispatcher("/mypage.jsp").forward(request, response);
}else{
  request.getRequestDispatcher("/mypage.jsp").forward(request, response);
  session.setAttribute("userallowed", false);
}

我如何写一个javascript函数能够隐藏基于用户权限的元素?

您可以简单地这样做:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:if test="${true == sessionScope.userallowed}">
<ul>
    <li><a href="servletName">MyfirstSubmenu</a></li>
    <li><a href="servletName1">MyfirstSubmenu1</a></li>
</ul>
</c:if>

与其用JavaScript隐藏元素,不如将逻辑放在JSP文件中,这样会更安全:

<% if ((boolean) session.getAttribute("userallowed")) { %>
<ul>
    <li><a href="servletName">MyfirstSubmenu</a></li>
    <li><a href="servletName1">MyfirstSubmenu1</a></li>
</ul>
<% } %>

请注意,如果不允许客户端看到这些受保护的菜单项,它们是如何不发送给客户端的。

同样,您的servlet代码可以简化一点:

session.setAttribute("userallowed", userallowed(username, itemid));
request.getRequestDispatcher("/mypage.jsp").forward(request, response);