【问题标题】:JSTL tags on JSP page do not work and appear plain in HTML page sourceJSP 页面上的 JSTL 标记不起作用,并且在 HTML 页面源代码中显示为普通标签
【发布时间】:2011-10-07 03:27:02
【问题描述】:

我一直在努力寻找我的代码中的问题,但我没有看到它。

在我的 servlet 中,我创建了一个国家列表并将其设置到我的请求中:

List<Country> countryList = (new CountryListForm(countryDAO)).getList();
request.setAttribute(ATTRIBUTE_COUNTRY_LIST, countryList);

当我调试我的 servlet 时,我看到国家列表已创建并放入请求中。

接下来,在我的 JSP 中,我获取国家/地区列表,遍历它并在下拉列表中显示值:

        <select id="clubCountryId" name="clubCountryId">
            <c:forEach var="country" items="${countryList}">
                <option value="${country.id}">
                    ${fn:escapeXml(country.name)}
                </option>
            </c:forEach>
        </select>

当我调试它时,我可以看到 countryList 在我的请求中并且国家存在。但是,我的下拉列表中什么也没有。当我查看页面的源代码时(在 Eclipse 中),我看到以下内容:

        <select id="clubCountryId" name="clubCountryId">
            <c:forEach var="country" items="[eu.ctt.pojo.Country@c7057c, eu.ctt.pojo.Country@391da0, eu.ctt.pojo.Country@1c7f37d, eu.ctt.pojo.Country@42a6eb, eu.ctt.pojo.Country@1dcc4cd]">
                <option value="">

                </option>
            </c:forEach>
        </select>

如您所见,我的五个对象都存在,但它只是不想遍历它们。我有其他页面,我基本上做同样的事情(国家列表,但不在下拉列表中),我没有问题。

有人有什么建议吗?

提前致谢!

【问题讨论】:

    标签: jsp jstl


    【解决方案1】:

    JSTL 标签出现在 HTML 源代码中,这是不对的。它应该在服务器端运行,并在 HTML 输出中完全消失。如果您没有在 JSP 顶部声明 taglib,就会发生这种情况。将以下行添加到 JSP 的顶部以运行 JSTL 核心标记:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    

    如果这反过来导致在服务器日志中抱怨缺少 TLD URI,那么您需要确保已安装 JSTL。也许您正在运行一个没有内置 JSTL 的容器,例如 Tomcat 或 Jetty。

    另见:

    【讨论】:

    • 谢谢 BalusC。那就是缺少的东西。我已经在我的其他页面中拥有它。多么愚蠢的错误!再次感谢!
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多