我在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>
在它显示的页面中 - emptyabcd - &gt;意味着它会转到第二个if(非空),即使fname有值。知道为什么吗?
答案 0 :(得分:5)
JSTL不读取scriptlet中定义的页面变量 - 这两个样式是分开的,不能很好地协同工作。
而不是
<% String fname = "abcd" %>
你需要这样的东西:
<c:set var="fname" value="abcd"/>
如果你必须使用scriptlet,那么你需要在JSTL读取之前将变量添加到页面上下文中:
<%
pageContext.setAttribute("fname", "abcd");
%>
答案 1 :(得分:0)
实际上我需要从会话中获取fname
我这样做 -
&lt;%String fname =(String)request.getSession()。getAttribute((EnterpriseConstants.USER_FIRST_NAME));%&gt;
<c:set var = "fname" value = "<%=request.getSession().getAttribute ((EnterpriseConstants.USER_FIRST_NAME))%>";/>
我需要在页面中显示的fname。如果我将第一个名称作为null或从会话中获取的空格,则用户可以输入它或者它将受到保护。所以我需要在显示页面之前检查一下。
<c:if test="${not empty fname}">
<html:text name="form1" property="firstName" styleClass="formContent" value="<%=fname.toUpperCase()%>" style = "background:#C8C8C8" readonly="true" maxlength="15" size="10"/>
</c:if>
<c:if test="${empty fname}">
<html:text name="form1" property="firstName"
styleClass="formContent" maxlength="15" size="10"/>
</c:if>
问题 -
1)我需要获取字符串的fname,然后做一个?如果我只是做一个var =“fname”,当我尝试在语句中使用这个变量时,它会给我错误。所以我必须首先将fname变为String fname。现在它正在运作。任何其他方式??