【问题标题】:How to fix jstl cforeach tag not rendering in Tomcat 7?如何修复 Tomcat 7 中未呈现的 jstl c foreach 标签?
【发布时间】:2015-09-08 16:10:26
【问题描述】:

我已经在 Netbeans 中设置了 Tomcat (TomEE)/7.0.62 (1.7.2) 并且服务器运行良好。我在 $CATALINA_HOME/lib 中添加了这些 jar:

  • javaee-api-6.0-6.jar
  • javax.servlet.jsp.jstl-1.2.1.jar

我在 context.xml 和 web.xml 中进行了适当的配置,以便使用 JDBC for Mysql 访问数据库,因为我能够使用这些 JSTL 标签查看数据:

<c:forEach var="cartItem" items="${cart.items}" varStatus="iter">
               <c:set var="product" value="${cartItem.product}"/>

            <div id="product_container_cart" class="lazyload">

            <div class="product_img_container">
                <div id="product_image"><a href="viewProduct?${product.id}">
                                <img class="cart_img" alt="" src="${initParam.productGalleryImagePath}${product.id} (1).jpg" /></a></div>
            </div>
                                <div class="product_name_container">
                                    <div style="text-align:center;" id="product_name"><a class="category_links" href="viewProduct?${product.id}">${product.name}</a></div>
                                </div>

                                <div class="product_price_container">
                                    <div id="product_price" style="text-align:center;" >$${product.price}</div></div>

                <div id="button_wrapper_cart">

                    <div id="add_toList_cart"><form id="wishlistFormCart" action="addToWishlist" method="post">
          <input name="productId" value="${product.id}" type="hidden">

          <input id="submit_list_cart" class="submit" value="<fmt:message key='AddToWishlist'/>" type="submit">
        </form></div>

                <div id="updateCart">

                    <form id="updateForm" action="updateCart" method="post">
                                                <input type="hidden"
                                                       name="productId"
                                                       value="${product.id}">

                                                <label for="quantity">Quantity</label>
                                                <input type="text"

                                                       maxlength="2"
                                                       size="2"
                                                       value="${cartItem.quantity}"
                                                       name="quantity"
                                                       style="margin:0px">

                                                <input class="updateButton"  type="submit"
                                                       name="submit"
                                                           onclick="updatedCart()"
                                                       value="<fmt:message key='update'/>">

                                            </form>
                </div>


                </div>

            </div>
          </c:forEach>

但使用这些标签,数据不会显示:

<c:forEach var="product" items="${categoryProducts}" varStatus="iter">

            <div id="product_container" class="lazyload">

            <div class="product_img_container">
                <div id="product_image"><a href="viewProduct?${product.id}">
                                <img class="img" alt="" src="${initParam.productGalleryImagePath}${product.id} (1).jpg" /></a></div>
            </div>
                                <div class="product_name_container">
                                    <div id="product_name"><a class="category_links" href="viewProduct?${product.id}">${product.name}</a></div>
                                </div>

                                <div class="product_price_container">
                                    <div id="product_price">$${product.price}</div></div>

                <div id="button_wrapper_category">
                <div id="add_toList">

                    <form id="wishlistForm" action="addToWishlist" method="post">
          <input name="productId" value="${product.id}" type="hidden">

          <input id="submit_list" class="submit" value="<fmt:message key='AddToWishlist'/>" type="submit">
        </form></div>

                <div id="add_toCart">

                    <form id="cartForm" action="addToCart" method="post">


          <input name="productId" value="${product.id}" type="hidden">
          <input id="submit_cart" class="submit" value="<fmt:message key='AddToCart'/>" type="submit">


                    </form></div>
                </div>

            </div>
          </c:forEach>

知道为什么吗?我通过尝试显示简单的产品 ID 来测试与数据库的连接:

<%@ page import="java.sql.*" %>
<% Connection connection = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection("jdbc:mysql://localhost/<DATABASE NAME>?user=<USERNAME>&password=<PASSWORD>");
Statement sql = connection.createStatement();
ResultSet result = sql.executeQuery("SELECT product FROM category_has_product");
while(result.next() )
{
out.println(result.getString("product_id") + "<br />");
} %>

我能够显示所有产品 ID,这是 Tomcat 可以成功连接到数据库并检索请求数据的好兆头。那么第二个标签有什么问题呢?

【问题讨论】:

    标签: java mysql jsp tomcat jstl


    【解决方案1】:

    问题应该是:

    <c:forEach var="product" items="${categoryProducts}" varStatus="iter">
    

    检查您是否将此变量 categoryProducts 绑定到 request 对象并且它有内容

    【讨论】:

    • 抱歉,您是什么意思?应该是什么问题?
    • @Rachid 我认为您应该调试检索 categoryProducts 列表的方法。确保列表不为空。如果没问题,您可以检查是否添加了一个对象名称“categoryProducts”,该对象名称存储了请求对象的产品列表。因为jsp会从请求中读取这个对象
    • 感谢您的回复。因为我刚从 GlassFish 迁移过来,所以我对 Tomcat 知之甚少。 Servlet 和 JSTL 标记 (cforEach) 过去与 Fish 配合得很好。这与Tomcat非常不同。我的应用程序过去可以正常工作。
    • 这是 Servlet 中的请求:if (userPath.equals("/category")) { String categoryId = request.getQueryString(); if (categoryId != null) { selectedCategory = categoryFacade.find(Short.parseShort(categoryId)); session.setAttribute("selectedCategory", selectedCategory); categoryProducts = selectedCategory.getProductCollection(); session.setAttribute("categoryProducts", categoryProducts); }
    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 2014-10-14
    • 2011-02-15
    • 1970-01-01
    • 2011-08-30
    • 2012-07-19
    • 2014-03-14
    • 2012-07-19
    相关资源
    最近更新 更多