2015-06-23 4 views
0

Я установил Tomcat (TomEE) /7.0.62 (1.7.2) в Netbeans, и сервер работает нормально. Я добавил эти банки в $ CATALINA_HOME/Lib:Как исправить jstl cforeach тег не рендеринг в Tomcat 7?

  • JavaEE-апи-6.0-6.jar
  • javax.servlet.jsp.jstl-1.2.1.jar

У меня есть правильная конфигурация в context.xml и web.xml для доступа к базе данных с помощью JDBC для 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> 

Любая идея, почему? Я проверил соединение с базой данных, пытаясь отобразить простые идентификаторы продуктов с этим:

<%@ 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 />"); 
} %> 

Я был в состоянии отобразить все идентификаторы продукта, который является хорошим признаком того, что Tomcat может успешно подключиться к БД и получить требуемые данные , Так в чем проблема со вторым тегом?

ответ

0

Проблема должна быть:

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

Проверьте, если связывание этой переменной categoryProducts для запроса объекта и имеет содержание

+0

Извините, но что вы имеете в виду? В чем проблема? –

+0

@Rachid Я думаю, вам следует отлаживать метод, который извлекает список categoryProducts. Убедитесь, что список не пуст. Если это нормально, вы можете проверить, добавлено ли имя объекта «categoryProducts», в котором хранится список продуктов для запроса объекта. Поскольку jsp будет читать этот объект по запросу –

+0

Спасибо за ваш ответ. У меня мало знаний о Tomcat, так как я просто перешел из GlassFish. Сервлета и тег JSTL (cforEach) отлично работали с Fish. Это очень отличается от Tomcat. Мое приложение использовалось для работы без конфликтов. –

Смежные вопросы