Электронный магазин на Java и XML

       

Использование объектов Cartltem и ShoppingCart


Как показано в листинге 4.14, CatalogBean создает объект Cartltem для некоторого товара на основе информации, содержащейся в экземпляре cat класса TheCatalog.

Метод doCartLnst, приведенный в листинге 4 14, контролирует вывод всех объектов Cartltem, содержащихся в экземпляре класса ShoppingCart Форматирование таблицы осуществляется методом doShowCart класса CatalogServ Метод doCartList обеспечивает отображение каждого заказанного товара в отдельной строке таблицы HTML, а также отображение количества заказанных экземпляров (numeberOrdered) для каждого из них Типичная страница, показывающая содержимое корзины покупателя, представлена на рис 4 6

Листинг 4.14. Методы CatalogBean, связанные с объектом ShoppingCart (CatalogBean.java)

public CartItem createCartItem( String id ){

Element pE = cat.getProductElByID( id );

return new CartItem( pE );

}

// we are in a <table>.. </table> pf was created with setOutput

public void doCartList( PrintWriter out,

ShoppingCart cart ){

Vector v = cart.getItems();

int ct = v.size();



for( int i = 0 ; i < ct ; i++ ){

CartItem item = (CartItem)v.elementAt(i);

out.print("<tr><td>");

String id = item.getId();

out.print( pf.doListOutput( cat.getProductElByID(id)));

out.print( "</td><td>");

out.print( "Number ordered: " + item.getNumberOrdered() );

out.print( "</td></tr>\r\n");

}

}

Рис. 4.6. Отображение содержимого корзины покупателя

Сложное форматирование при представлении полной информации о товаре (как показано на рис. 4 4 и 4 5) контролируется методом doFuTIItem, код которого приведен в листинге 4 15 Исходно мы строим таблицу с четырьмя или тремя ячейками в зависимости от наличия или отсутствия изображения товара В этой таблице содержатся сведения о товаре, его изображение (если оно есть), название и цена, а также количество заказанных экземпляров (если покупатель решил приобрести этот товар) Создается объект ProductFormatter, задающий стиль отображения всей этой информации о товаре, то есть стиль всех фрагментов текста, которые содержатся в документе XML, описывающем данный товар


+ " value=\"setcart\" >");

if( ci.getNumberOrdered() == 0 ){

out.print("<input type=\"HIDDEN\" name=\"itemct\" value=\"1\" >");

out.print("<input type=\"SUBMIT\" value=\"" );

out.print(" Add this item to cart\" >");

}

else {

out.print( "<i>To change the number ordered,

enter a new number here "

+ "and click the Change button.</i><br />" );

out.print("<input type=\"TEXT\" name=\"itemct\" size=\"5\"" +

" value=\"" + ci.getNumberOrdered() + "\" > &nbsp; ");

out.print("<input type=\"SUBMIT\" value=\"");

out.print("Change\" >");

}

out.print("</form></td></tr>\r\n");

}






Содержание раздела