3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
表達(dá)${foo}在后臺(tái)使用JspContext#findAttribute()其搜索在屬性PageContext,HttpServletRequest,HttpSession并ServletContext以該順序可以通過(guò)getAttribute("foo")方法,由此foo從${foo}由此表示屬性名"foo",并返回第一個(gè)非空對(duì)象。
因此,如果您在Servlet中執(zhí)行
ArrayList<Person> persons = getItSomehow();
request.setAttribute("persons", persons); // It's now available by ${persons}
request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response);
并通過(guò)URL調(diào)用此servlet,然后就可以page.jsp按照以下步驟對(duì)其進(jìn)行迭代:
<c:foreach items="${persons}" var="person">
${person.title}
<c:forEach>
當(dāng)您將其放在會(huì)話范圍中時(shí),上述內(nèi)容同樣有效
request.getSession().setAttribute("persons", persons);
甚至在應(yīng)用范圍內(nèi)
getServletContext().setAttribute("persons", persons);
EL將用于title在${person.title}暗中尋找一個(gè)公共實(shí)例(不是靜態(tài)的?。┣熬Y方法get在Person類象下面這樣:
public String getTitle() {
return title;
}
該字段title不一定需要存在于類中(因此您甚至可以返回一個(gè)硬編碼的字符串并繼續(xù)使用${person.title}),并且它不一定必須是實(shí)例字段(因此也可以是一個(gè)靜態(tài)字段,只要getter方法本身不是靜態(tài)的)。
只有boolean(不是Boolean?。┪鼩鈩┯刑厥獯觥L將隱式地尋找以開頭的公共方法is。例如${person.awesome}:
public boolean isAwesome() {
return awesome;
}

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
<c:forEach var="item" items="${names}"> ${item.title} </c:forEach>
names 應(yīng)該在set as屬性中可用于視圖

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果使用Servlet或操作類創(chuàng)建列表,然后將其轉(zhuǎn)發(fā)到JSP,則Servlet或操作類中必須包含以下行。
ArrayList<Person> names = "get from somewhere";
request.setAttribute("personNames",names);
<c:foreach var="item" items="${personNames}"> ${item.title} </c:foreach>
添加回答
舉報(bào)