在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 我得到警告:
无法解析变量"状态">
我该如何解决这个问题?
你在作用域方面有问题,当你在 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}">
根据更新的代码,您需要在 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变量"status"在服务器上设置为 Java 字符串"脱机"或"联机"。 您可以使用 JSP 标记<%= %>
将其值写入 HTML 流中。