不使用request對象的set方法,而用JSTL的set標簽可以保存這個集合fruits嗎?
<% ????List<String>?fruits?=?new?ArrayList<String>(); ????fruits.add("watermelon"); ????//不用request對象的set方法?request.setAttribute("fruit",fruits); %> <c:set?value="${fruits}"?var="fruit"?scope="request"></c:set> <c:foreach?items="${requestScope.fruit}"?var="f"> <c:out?value="${f}"></c:out> </c:foreach>
使用request的setAttribute方法可以存儲fruits集合,但使用set標簽卻存儲不了(因為out標簽沒有輸出),這是因為set標簽不能存儲集合的原因嗎?
2019-01-16
不知道你解決問題了沒,我看了你的例子倒是想明白可。
實例化變量是要申請內存儲存值得,set申明的只是引用關系。你例子里沒有創(chuàng)建有界對象,
<c:set?value=
"${fruits}"
?var=
"fruit"
?scope=
"request"
></c:set> 這一行的 ${fruits} 是空的。只要你在上面把list扔到request里或者其他三個對象里,這才創(chuàng)建出一個有效的有界對象,這個值才能獲取到你的List
2017-11-30
倒不是那個原因。使用set標簽的target 屬性,能選擇javabean用以存值,也可以通過map類型的鍵存值,所以使用set標簽頁可以存放集合。
使用request的原因在與,forEach標簽的使用幾乎都是用于在頁面顯示后臺查詢到的數(shù)據(jù),一般從后臺數(shù)據(jù)庫獲取到的數(shù)據(jù)都是通過request.setAttribute方法把集合放到一個對象中,在通過調用這個對象在頁面中展示值。簡單的說就是,使用forEach標簽遍歷的集合大多數(shù)時候都是從后臺程序獲取的,所以都是存放在請求中。