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



Гибкость содержимого


Чтобы добиться гибкости внутреннего содержимого страницы, мы собираемся использовать форматирующий класс с именем ProductFormatter Этот класс выдает данные элемента XML product в формате, задаваемом с помощью списка имен полей, которому сопоставлен список стилей, применяемых к тексту каждого поля.

В качестве простого примера рассмотрим следующую ситуацию: для каждого товара требуется отобразить на странице его название в формате ch3 и цену в формате ch4. Для этого мы определяем два массива типа String:

Stnng[] elem = { "prname", "price" };

String[] shortSt = { "ch3", "ch4"

Также мы хотим, чтобы имя каждого товара было представлено в виде ссылки, щелчок на которой вызывает отображение полной информации о данном товаре. Для этого строковой переменной alink присваивается соответствующее значение, наподобие следующего:

"http://localhost/servlet/cattest?action=showproduct"

Также нам надо определить целочисленную переменную типа int с именем linkN, содержащую индекс (номер) поля, которое должно стать ссылкой. В нашем случае linkN0, так как такой ссылкой должно быть имя элемента (название товара). Когда эти параметры установлены, метод doOutput, приведенный в листинге 3.11, может форматировать данные для конкретного товара (элемента product), содержащиеся в документе XML catalog.xml. В результате выполнения метода doOutput получается строка, которую уже можно вставлять в HTML-страницу.

Листинг 3.11. Метод doOutput (productFormatter.java)

public String doOutput( Element el ){

StringBuffer sb = new StringBuffer( );

String pid = null ;

if( aLink != null ){

pid = "&id=" + el.getAttribute("id") ;

System.out.println("pid is " + pid );

}

else { System.out.println("aLink null");

}

for( int i = 0 ; i < elem.length ; i++ ){

if( i == linkN && pid != null ){

sb.append( "<a class=\"" );

sb.append( style[i] );

sb.append("\" href=\"");




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