2015-11-18 2 views
0

Je le jsp suivantboucle foreach var est pas visible de jsp inlude

  ... 
      <table id="table" class="sortable"> 
         <thead> 
         <tr> 
          <td class="head">Дата Запроса</td> 
          <td class="head">Сумма Запроса</td> 
          <td class="head">Баланс Владельца</td> 
          <td class="head">Статус Запроса</td> 
          <td class="head">Email</td> 
          <td class="head">-----</td> 
         </tr> 
         </thead> 

         <tbody> 
         <c:forEach var="event" items="${events}"> 
          <tr> 
           <td> 
            <jsp:useBean id="dateValue" class="java.util.Date"/> 
            <jsp:setProperty name="dateValue" property="time" 
                value="${event.timestamp}"/> 
            <fmt:formatDate value="${dateValue}" 
                pattern="MM/dd/yyyy HH:mm"/> 
           </td> 
           <td>${event.amount}</td> 
           <td>${event.sourceUser.userAccounts.iterator().next().currentAmount}</td> 
           <td>${event.status}</td> 
           <td>${event.sourceUser.email}</td> 
           <td><c:if test="${event.status != 'SUCCESS'}"> 
            <input type="button" class="withDraw" 
              value="подтвердить вывод"/> 
           </c:if> 

            <div class="edit-holder adt" id=""> 

             <div class="edit-box"> 
              <div class="title">Подтверждение вывода средств владельцем</div> 
              <form action="/admin/confirmWithdrawRequest" 
                method="post"> 
               <div> 
                <input type="hidden" value="${event.id}" name="eventId"/> 
                <label>Статус</label> 
                <select name="status"> 
                 <c:forEach items="${statuses}" var="status"> 
                  <option <c:if test="${status == event.status}"> 
                     selected="selected" 
                    </c:if> 
                    >${status}</option> 
                 </c:forEach> 
                </select> 
                <div class="clear"/> 
               </div> 
               <div> 
                <label>Email</label> 
                <input type="text" class="with-draw-input" name="email" 
                  value="${event.sourceUser.email}" 
                  readonly/> 
                <div class="clear"/> 
               </div> 
               <div> 
                <label>Текущий баланс</label> 
                <input type="text" class="with-draw-input" name="balance" 
                  value="${event.sourceUser.userAccounts.iterator().next().currentAmount}" 
                  readonly/> 
                <div class="clear"/> 
               </div> 
               <div> 
                <label>Сумма запроса</label> 
                <input type="text" class="with-draw-input" name="email" 
                  value="${event.amount}" 
                  readonly/> 
                <div class="clear"/> 
               </div> 
               <div> 
                <label>Комментарий модератора</label> 
                <textarea class="moderationComment" 
                   name="moderationComment">${event.moderationComment}</textarea> 
                <div class="clear"/> 
               </div> 
               <input type="submit" class="btn" value="сохранить"/> 

               <div class="clear"></div> 
              </form> 
              <div class="close"></div> 
             </div> 
            </div> 
           </td> 
          </tr> 
         </c:forEach> 
         </tbody> 
        </table> 
        ... 

Maintenant, il est compile bien et je vois résultat attendu: enter image description here

Je veux extraire la dernière contenu td à séparer jsp comme ceci:

<tbody> 
          <c:forEach var="event" items="${events}"> 
           <tr> 
            <td> 
             <jsp:useBean id="dateValue" class="java.util.Date"/> 
             <jsp:setProperty name="dateValue" property="time" 
                 value="${event.timestamp}"/> 
             <fmt:formatDate value="${dateValue}" 
                 pattern="dd.MM.yyyy HH:mm:ss"/> 
            </td> 
            <td>${event.amount}</td> 
            <td>${event.sourceUser.userAccounts.iterator().next().currentAmount}</td> 
            <td>${event.status}</td> 
            <td>${event.sourceUser.email}</td> 
            <td><jsp:include page="confirmWithDrawModal.jsp"/> 
            </td> 
           </tr> 
          </c:forEach> 
          </tbody> 

et confirmWithDrawModal.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 

<c:if test="${event.status != 'SUCCESS'}"> 
    <input type="button" class="withDraw" 
     value="подтвердить вывод"/> 
</c:if> 

<div class="edit-holder adt" id=""> 

    <div class="edit-box"> 
    <div class="title">Подтверждение вывода средств владельцем</div> 
    <form action="/admin/confirmWithdrawRequest" 
      method="post"> 
     <div> 
     <input type="hidden" value="${event.id}" name="eventId"/> 
     <label>Статус</label> 
     <select name="status"> 
      <c:forEach items="${statuses}" var="status"> 
      <option <c:if test="${status == event.status}"> 
       selected="selected" 
      </c:if> 
        >${status}</option> 
      </c:forEach> 
     </select> 
     <div class="clear"/> 
     </div> 
     <div> 
     <label>Email</label> 
     <input type="text" class="with-draw-input" name="email" 
       value="${event.sourceUser.email}" 
       readonly/> 
     <div class="clear"/> 
     </div> 
     <div> 
     <label>Текущий баланс</label> 
     <input type="text" class="with-draw-input" name="balance" 
       value="${event.sourceUser.userAccounts.iterator().next().currentAmount}" 
       readonly/> 
     <div class="clear"/> 
     </div> 
     <div> 
     <label>Сумма запроса</label> 
     <input type="text" class="with-draw-input" name="email" 
       value="${event.amount}" 
       readonly/> 
     <div class="clear"/> 
     </div> 
     <div> 
     <label>Комментарий модератора</label> 
                 <textarea class="moderationComment" 
                    name="moderationComment">${event.moderationComment}</textarea> 
     <div class="clear"/> 
     </div> 
     <input type="submit" class="btn" value="сохранить"/> 

     <div class="clear"></div> 
    </form> 
    <div class="close"></div> 
    </div> 
</div> 

et après ce refactoring je vois le résultat suivant:

enter image description here

Comme vous pouvez le voir les variables n'est pas rendu.

Comment le réparer?

+0

Le _way_ vous incluez les autres questions JSP. Voir [cette réponse] (http://stackoverflow.com/a/14763794/17300) sur _ [Quelle est la différence entre inclure des fichiers avec une directive d'inclusion JSP, inclure une action JSP et utiliser des fichiers de balise JSP?] (Http: // stackoverflow .com/q/14580120/17300) _ –

+0

@Stephen P Pensez-vous que jsp: include est faux pour mon cas? – gstackoverflow

+0

Oui ...le '<% @ include ...>' est le formulaire que je pense que vous voulez. Voir [cette réponse] (http://stackoverflow.com/a/943789/17300) à _ [Variables dans les pages jsp avec les pages "incluses"] (http://stackoverflow.com/q/943770/17300) _ –

Répondre

0

Un fichier .jsp se traduit à un .java fichier, qui est compilé et exécuté, fournissant une sortie qui est finalement envoyée au navigateur.

Lorsque vous ajoutez un autre jsp dans un jsp comment ceux qui sont traduites et compilés dépend de quelle forme de comprennent que vous utilisez.

<jsp:include page="incpage.jsp"> traduit et compile mainpage.jsp et incpage.jspséparément et insère la sortie du incpage.jsp au inclure emplacement. En pensant à cette situation, incpage.jsp est indépendant de mainpage.jsp donc (naturellement) n'a pas accès à ces variables.

<%@include file="incpage.jsp"> est plus comme un C#include où le contenu de incpage.jsp sont copiés dans mainpage.jsp avant traduction et compilation lieu. Dans ce cas, peu importe si inpage a une extension .jsp.

Si vous voulez que le fichier inclus pour agir dans le cadre du dossier principal, car il vous semble le faire, vous devez utiliser la deuxième forme d'inclure - <%@include ...>