如何使用JSP调用变量?

时间:2019-06-04 21:29:13

标签: java jsp intellij-idea

在JSP中,我创建了一个像这样的简单变量:

<%
    if (request.getSession().getAttribute("user") != null) {
        String status = "online";
    }
    else {
        String status = "offline";
    }
%>

在HTML中,我这样调用变量:${status}

因此,如下面的代码所示,字符串“ offline”或“ online”将只是一个CSS类:

<img class="profile-pic" src="../assets/img/reza.png" alt="Chin"> <i class="status ${status}"></i>Reza

所以整个代码如下:

<%
    if (request.getSession().getAttribute("user") != null) {
        String status = "online";
    }
    else {
        String status = "offline";
    }
%>
    <div class="user-section">
        <img class="profile-pic" src="../assets/img/reza.png" alt="Chin"> <i class="status ${status}"></i>Reza
    </div>

但是从Intellij我得到警告:

  

无法解析变量“状态”

我该如何解决?

2 个答案:

答案 0 :(得分:3)

您在使用范围时遇到了问题,当您在if或else块中声明一个变量时,可以在该范围中使用该变量,就可以像这样解决问题:

<%
    String status = "offline"; // declare the variable outside the if else
    if (request.getSession().getAttribute("user") != null) {
        status = "online"; // if the condition is correct then assign "online"
    }
%>

编辑后

似乎您使用错误的方式使用了变量名,相反,您必须使用:

<i class="status <%=status%>">

代替:

<i class="status ${status}">

答案 1 :(得分:2)

根据更新后的代码,您需要在HTML中引用这样的“状态”:

<div class="user-section">
    <img class="profile-pic" src="../assets/img/reza.png" alt="Chin"> <i class="status <%=status%>"></i>Reza
</div>

“ JSP”被处理为“服务器端”。它的输出是HTML,然后将其发送到您的浏览器。

Java变量“状态”在服务器上设置为Java字符串“ offline”或“ online”。您可以使用JSP标记<%= %>将其值写入HTML流。