Java <;c:如果>;jstl条件不起作用

Java <;c:如果>;jstl条件不起作用,java,jsp,jakarta-ee,web,jstl,Java,Jsp,Jakarta Ee,Web,Jstl,我是java ee编程的初学者,我编写了一个JSTL条件,以便在会话bean中验证登录状态是真是假 <c:choose> <c:if test="${Boolean.valueOf(Session.getLogStat())}"> ${Session.getLogStat()} </c:if> <c:if test="${Boolean.valueOf(!Session.getLogStat())}"> <a hr

我是java ee编程的初学者,我编写了一个JSTL条件,以便在会话bean中验证登录状态是真是假

<c:choose>
  <c:if test="${Boolean.valueOf(Session.getLogStat())}">
    ${Session.getLogStat()}
  </c:if>
  <c:if test="${Boolean.valueOf(!Session.getLogStat())}">
    <a href="login">login</a>
  </c:if>
</c:choose>

${Session.getLogStat()}
当我将if替换为when时:

<c:choose>
  <c:when test="${Boolean.valueOf(Session.getLogStat())}">
    ${Session.getLogStat()}
  </c:when>
  <c:when test="${Boolean.valueOf(!Session.getLogStat())}">
    <a href="login">login</a>
  </c:when>
</c:choose>

${Session.getLogStat()}

很抱歉我的英语不好。第一个肯定是错的

必须有一个或多个
标记,并且可以选择嵌套一个
标记

是一个独立的构造

Session.getLogStat()的返回值是多少?如果是字符串
“true”
“false”
,则是正确的,但这似乎不太可能。也许你是说它是一个
null
测试

无论如何,您应该使用

如果您的问题仍然存在(您在回答中说:但代码不适用于…) 我建议您将bean嵌入servlet中。servlet将在请求中设置您的参数。然后测试JSP中需要的内容

public class ExampleServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


                Session MyObject = new Session();
                 boolean myParam=MyObject.getLogStat();  


  
  String s1 = Boolean.toString(myParam);


       try {
            

        request.setAttribute("I_WANT_TO_TEST", s1);

        RequestDispatcher view = request.getRequestDispatcher("My.jsp");
        view.forward(request, response); 


         } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }


    }}
然后在JSP中

  <% String msg2=(String)request.getAttribute("I_WANT_TO_TEST");%>
                
        <% if ( (msg2==null || msg2.isEmpty()) ) { %> 
         // WHAT YOU ARE NOT LOGED IN             
        <% } else if(msg2!=null) { %>
                        
         <% }  %>

//你没有登录什么

认为它适用于这种情况,但我可以在其他jsp文件中包含servlet吗?包含servlet是什么意思?若要将参数传递给它,可以使用窗体或
public class ExampleServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


                Session MyObject = new Session();
                 boolean myParam=MyObject.getLogStat();  


  
  String s1 = Boolean.toString(myParam);


       try {
            

        request.setAttribute("I_WANT_TO_TEST", s1);

        RequestDispatcher view = request.getRequestDispatcher("My.jsp");
        view.forward(request, response); 


         } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }


    }}
  <% String msg2=(String)request.getAttribute("I_WANT_TO_TEST");%>
                
        <% if ( (msg2==null || msg2.isEmpty()) ) { %> 
         // WHAT YOU ARE NOT LOGED IN             
        <% } else if(msg2!=null) { %>
                        
         <% }  %>