Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP全局变量_Java_Jsp_Global Variables - Fatal编程技术网

Java JSP全局变量

Java JSP全局变量,java,jsp,global-variables,Java,Jsp,Global Variables,我有这个密码 <%! public String class_name = ""; %> <c:choose> <c:when test="${WCParam.categoryId != null}"> <% class_name = "my_account_custom"; %> </c:when> <c:otherwise> <%

我有这个密码

<%!  
   public String class_name = "";  
%>  
<c:choose>
      <c:when test="${WCParam.categoryId != null}">
        <% class_name = "my_account_custom"; %>
      </c:when>
      <c:otherwise>
        <% class_name = "my_account_custom_3"; %>
      </c:otherwise>    
</c:choose>    
<p>Class name = <c:out value='${class_name}' /></p>

类名=

WCParam.categoryId是否为null 但是我的class_name变量总是空的。 我做错了什么 感谢

scriptlet(
)和表达式语言(
${…}
)是完全不同的东西,因此它们的变量属于不同的范围(EL表达式中使用的变量实际上是不同范围的请求属性)

如果将
class_name
标记为scriptlet变量,则还应使用scriptlet访问它:

<p>Class name = <c:out value='<%=class_name%>' /></p> 
类名=

但是,您可以完全不使用变量来编写它:

<p>Class name = <c:out 
     value='${WCParam.categoryId != null ? "my_account_custom" : "my_account_custom3"}' /></p>    
类名=


+1:没错。el(${})用于访问作用域变量(应用程序、会话、请求和页面),它们无法访问Scriptlet中定义的变量您可能需要非常小心声明的变量,IIRC它们是实例变量,因此在该页面的所有用户之间共享。这可能没问题,但在我看来应该避免,就像所有的scriptlet一样。