jsp中的<c:if>语句无法正常工作

RMa*_*RMa 2 jsp jstl

我在JSP中声明如下:

     <% String fname = "abcd" %>

        <c:if test="${not empty fname}">
       <% out.println("not empty"+fname); %>
        </c:if> 

    <c:if test="${empty fname}">
    <% out.println(" empty"+fname); %>
    </c:if>
Run Code Online (Sandbox Code Playgroud)

在它显示的页面中 - emptyabcd - >表示它转到第二个if(非空),即使fname有值.任何想法为什么?

ska*_*man 5

JSTL不读取scriptlet中定义的页面变量 - 这两个样式是分开的,不能很好地协同工作.

代替

<% String fname = "abcd" %>
Run Code Online (Sandbox Code Playgroud)

你需要这样的东西:

<c:set var="fname" value="abcd"/>
Run Code Online (Sandbox Code Playgroud)

如果必须使用scriptlet,则需要在JSTL读取之前将变量添加到页面上下文中:

<% 
   pageContext.setAttribute("fname", "abcd");
%>
Run Code Online (Sandbox Code Playgroud)