我的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 :(得分:0)
这对我有用:
<% pageContext.setAttribute("urls", LoginServlet.getAvailableUrlsConfig()); %>
<c:forEach var="url" items="${urls}">
<c:out value="${url}"></c:out>
</c:forEach>
似乎不喜欢使用&lt; %%&gt;在jstl
答案 1 :(得分:0)
@Cristian我不会称自己为专家,而是我对你的问题的一些看法,ps。试图将此添加为评论,但我需要更多的字符!
我相信你的c:set
你需要将语法作为表达式(而不是scriplet,因为它被<%..%>
标记所包围,所以不会打印任何内容。)。
表达式<%=..%>
=对于表达式,计算表达式的结果将转换为字符串并直接包含在输出页面中。这里=
部分表示它应该打印出标记内代码的返回值,而scriptlet是语句。请注意,当您使用表达式时,它不需要分号。
恕我直言,我认为如果可能的话,最好尽可能避免scriplets / expression,我会在请求/会话上设置任何值或在页面bean对象上设置它们。这样jsps很干净,有利于可读性,但当然取决于你的特定问题/场景。
您可能会发现以下链接也很有用http://java.sun.com/developer/onlineTraining/JSPIntro/contents.html&amp; http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro7.html
希望这有帮助。