2012-03-01 4 views
0

У меня возникли проблемы с попыткой распечатать таблицу в HTML, чтобы элементы отображались в нужном месте. На данный момент у меня это есть. Это выводит данные в виде списка, поэтому все находится в отдельном столбце.Как правильно распечатать эту таблицу Веб-приложение HTML/Java

    <table border=0 width="75%"> 

         <% 
            for (int pos = 0; pos < list.size(); pos++) { 
             Menu menu = list.getMenuAt(pos); 
         %> 

         <tr> 
          <tr width="80%"> 
          <b>Title:</b><br> 
          <b>Dish:</b><br> 
          <b>Description:</b><br> 
          <b>Price:</b><br><br> 
          </tr> 
         </tr> 
         <tr> 
          <td width="80%"> 
           <%= menu.getTitle()%> <br> 
           <%= menu.getDish()%> <br> 
           <%= menu.getDescription()%> <br> 
           <%= menu.getPrice()%> <br><br> 
          </td> 
         </tr> 

         <% 
            } // end for 
         %> 

        </table> 

Меню может содержать одно название с названиями блюд, описаниями блюд и ценами.

+0

Вы, вероятно, нужно предоставить немного больше информации о том, что вы ожидают, что таблица будет выглядеть. – dougajmcdonald

+0

Отделите обработку данных от просмотра? См. Http://programmers.stackexchange.com/questions/87686/nested-languages-code-smell – Jayan

ответ

1

Я не понимаю, почему у вас есть <br/> внутри элемента <td>. Ваш код будет отделять каждый поданный в чем-то вроде этого:

Title: 
Dish: 
Description: 
Price: 

text 
text 
text 
text 

Я думаю, что ваш код shuold выглядеть так:

<table border=0 width="75%"> 

<thead> 
    <tr> 
     <th>Title</th> 
     <th>Dish</th> 
     <th>Description</th> 
     <th>Price</th> 
    </tr> 
</thead> 
<% 
      for (int pos = 0; pos < list.size(); pos++) { 
       Menu menu = list.getMenuAt(pos); 
%> 

<tbody> 
    <tr> 
     <td><%= menu.getTitle()%></td> 
     <td><%= menu.getDish()%></td> 
     <td><%= menu.getDescription()%></td> 
     <td><%= menu.getPrice()%></td> 
    </tr> 
</tbody> 

<% 
      } // end for 
%> 

1

Вы не можете иметь <tr>, вложенный внутри <tr>. Это строки таблицы. Измените их на <td> для ячеек таблицы.

<tr> 
    <td width="80%"> 
    <strong>Title:</strong><br/> 
    <strong>Dish:</strong><br/> 
    <strong>Description:</strong><br/> 
    <strong>Price:</strong><br><br/> 
    </td> 
</tr> 

Кроме того, использование <strong> из HTML 4 и закрыть <br/> тег, но это в основном педантичный :)

EDIT:

Глядя на ваш код, я думаю, что вы хотите это заголовок и затем выполнить цикл for и заполнить каждую строку одним элементом «меню» для каждого объекта в цикле for. Попробуйте это:

<table border="0" width="75%"> 
    <!-- Table header --> 
    <tr> 
     <td><strong>Title:</strong></td> 
     <td><strong>Dish:</strong></td> 
     <td><strong>Description:</strong></td> 
     <td><strong>Price:</strong></td> 
    </tr> 

<% 
    for (int pos = 0; pos < list.size(); pos++) { 
     Menu menu = list.getMenuAt(pos); 
%> 

    <!-- Table contents --> 

    <tr> 
     <td><%= menu.getTitle(); %></td> 
     <td><%= menu.getDish(); %></td> 
     <td><%= menu.getDescription(); %></td> 
     <td><%= menu.getPrice(); %></td> 
    </tr> 

<% 
    } // end for 
%> 

</table> 

Вы хотите только заголовок с «Title», «Блюдо» и т.д., как только до верхней, а затем запустить цикл и добавить в строках после этого. Обратите внимание, что каждая строка имеет поле в отдельной ячейке, так как вы должны отделять данные в виде таблицы. Я бы рекомендовал стиль с CSS, желательно, включив внешний файл CSS.

+0

И также переместите заголовок таблицы до начала цикла for, я предполагаю, что вы не хотите, чтобы заголовок повторялся – Kennet

+0

Также поняли, что у них не было каждого поля для отдельного , который бы все смешал бы –

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