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



         

Класс NewsFormatter - часть 3


Метод doNews, показанный в листинге 8.5, отыскивает сообщение по указанному атрибуту id и форматирует полную версию сообщения. Оставшийся метод класса NewsFormatter предназначен для поддержки двух методов doNews.

Листинг 8.5. Версия doNews для одного выбранного сообщения (NewsFormatter.java)

// version to do a single item by id - always full length public int doNews( PrintWriter out, String hs, String fs, String id ){ headStr = hs ; footStr = fs ; itemsCount = 0 ; Node n = null ; // for( int i = 0 ; i < itemNodes.length ; i++ ){ n = itemNodes[i]; // <Newsitem nodes String nid = ((Element)n).getAttribute("id"); if( id.equals( nid )){ break ; } } // if not located by id, will be oldest item findNodes((Element) n ); // locates the parts of <Newsitem doNewsItemLong( out ); // with the single id return itemsCount ; }

Мы решили, что заголовки сообщений всегда будут форматироваться как маркированные списки (unordered lists) HTML. Это очень упрощает метод doHeadli - neNews, показанный в листинге 8.6.

Листинг 8.6. Метод, форматирующий список заголовков новостей (NewsFormatter.java)

// Headline always formatted as <UL> with link public void doHeadlineNews(PrintWriter out){ out.println( "<ul>" ); for( int i = skipNitems ; i < itemNodes.length ; i++ ){ if( i >= maxNitems ) break ; Node n = itemNodes[i]; // <Newsitem nodes String id = ((Element)n).getAttribute("id"); findNodes((Element) n ); // locates the parts of <Newsitem out.print("<li><a href=" + handler + "?id=" + id + "&size=L >" ); out.print( nodeHash.get("head") ); out.println("</a></li>"); } out.println("</ul>"); }

Метод doShort, показанный в листинге 8.7, проверяет наличие заданного по умолчанию шаблона форматирования короткой версии сообщения, а затем выводит эту версию на страницу. Обратите внимание на то, что из каждого элемента (сообщения) извлекается его атрибут id, прежде чем будет вызван метод doNewsItemShort. Этот идентификатор впоследствии присоединяется к каждому элементу, представляющему собой краткую версию, в качестве ссылки на полный текст сообщения.




Содержание  Назад  Вперед