簡體   English   中英

JSTL c:設定條件

[英]JSTL c:set condition

需要你的幫助來解決這個問題。
場景:在我的JSP上,我正在嘗試打印

<b>Season 1: ${season}</b>

<b>Season 2: ${season}</b>

這是第一次打印好(兩個季節最初打印為“冬天”)。 現在我想添加一個if條件來改變季節值,如:

<c:if test="${temperature eq 'HOT' || 'VERYHOT'}">
       <c:set var="season" value="summer is here" />
 </c:if>

執行此if條件時,第1季將更改為“夏天在這里”,但第2季保持不變。 它為什么如此? 第1季是page1.jsp的一部分,第2季是page2.jsp的一部分,它們包含在parentPage.jsp中

兩個問題:

首先,您的比較無效。 第二個條件總是true 相應修復:

<c:if test="${temperature eq 'HOT' || temperature eq 'VERYHOT'}">

其次,您將變量存儲在默認頁面范圍中,該范圍在包含的JSP頁面之間不共享。 而是將其存儲在請求范圍內。

<c:set var="season" value="summer is here" scope="request" />

更新 :根據評論結果,這些JSP不參與同一請求。 然后,您應該獲取會話范圍(並且請注意,這樣變量會在所有瀏覽器窗口/選項卡中的所有請求中公開!這不是本身所希望的)。 您應該只確保在每個 <c:set var="season">指定范圍。

<c:set var="season" value="some value" scope="session" />

EL表達式${season}將分別在頁面,請求,會話和應用程序范圍中搜索第一個非空的屬性。 因此,如果您在沒有顯式范圍的情況下執行<c:set> ,那么它將存儲在頁面范圍中並在同一頁面中獲取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM