2012-02-21 63 views
0

迭代列表時,我在我的JSP文件如下代碼:問題在JSP

<c:set var="urls" value="<%LoginServlet.getAvailableUrlsConfig();%>" /> 
    <c:forEach var="url" items="${urls}"> 
     <c:out value="${url}"/> 
    </c:forEach> 

getAvailableUrlsConfig()是一個靜態方法返回一個字符串數組。

我不明白爲什麼它不打印任何東西。 ..

如果我用這個:

<%out.println(LoginServlet.getAvailableUrlsConfig()); %> 

它打印出來的清單的內容。你能看到任何問題嗎?

回答

0

這爲我工作:

<% pageContext.setAttribute("urls", LoginServlet.getAvailableUrlsConfig()); %> 
<c:forEach var="url" items="${urls}"> 
    <c:out value="${url}"></c:out> 
</c:forEach> 

似乎不喜歡用<%%>在JSTL

0

@Cristian我不會稱自己是專家,但我的一些想法上你問題,ps。試圖添加這個作爲評論,但我需要更多的字符!

我相信你的c:set你需要有一個表達式語法(不是scriplet,因爲它被一個<%..%>標籤包圍,所以不會打印任何東西)。

表達式<%=..%> =使用表達式評估表達式的結果將轉換爲字符串並直接包含在輸出頁面中。這裏的=部分表示它應該打印出標籤內代碼的返回值,而scriptlet是語句。請注意,當您使用表達式時,它不需要分號。恕我直言,我認爲如果可能的話,最好避免scriplets /表達式,如果可能的話,我會在請求/會話中設置任何值或將它們設置在頁面bean對象上。這樣,jsps很乾淨,並且有利於可讀性,但當然取決於您的特定問題/場景。

您可能會發現下面的鏈接,以及http://java.sun.com/developer/onlineTraining/JSPIntro/contents.html & http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro7.html

希望這有助於有用。