5

私はこのコードを持っています

<%!  
   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 変数は常に空です。私が間違っていること ありがとう

4

1 に答える 1

7

スクリプトレット ( <%...%>) と式言語 ( ${...}) は完全に異なるものであるため、それらの変数は異なるスコープに属します (EL 式で使用される変数は、実際には異なるスコープのリクエスト属性です)。

スクリプトレット変数として宣言した場合はclass_name、同様にスクリプトレットを使用してアクセスする必要があります。

<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>    
于 2012-08-30T12:29:16.483 に答える