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