Виды программирования, программирование, языки программирования, книги программирование На сайте представлена информация про программирование в Интернете и работу  

передача данных из апплета
путь к файлу
Java + Ms Sql Server
Перегрузка операторов
JavaOS, about JavaOS
где взять CLDC для J2me - на сайте Sun не дают, CLDC download
Как Вы относитесь к курящим девушкам?
Прежде чем задать вопрос, прочтите это!
Документация и книги по Java, Давайте соберём ссылки
Трабла в Linux, Помогите пожалуйста
Java vs. C, Как вы думаете что лучше C или Java
Java ICQ applet. Как это сделано?, Хотелось бы уяснить основные принципы
Канва в Яве, Как вычеслить?
JDBC drivers , ClassPath, Регистрация JDBC драйверов
Предпочитаемый IDE
javap, big problem
tomcat-3.2.1
перекодировка строк из UTF-8 в KOI8-R, перекодировка строк из UTF-8 в KOI8-R
mouse wheel fix
NetBeans3.3, Help to find manual
Eclipse и CDT, Что такое CDT
Сервлеты, JSP, WebApplication
jdk1.4, куда девался javac
Имитация нажатия клавиши в Java
Имя компьютера
JTree, JTree без создания объектов DefaultMutab
jdbc connection + fonts in jDeveloper
Static Menu
Как заставить JScrollPane отображать верхнюю ...
Как заставить JScrollPane отображать верхнюю ...
RMI, RMI & DB
Java & SNMP, Опрос устройств из Java по протоколуSNMP
открытие URL из апплета
Вопрос по cocoon2
JComboBox в JTableHeader
java3D, ERROR: Canvas3D constructed with a null
Вопрос!!, Как написать...
получение информации о устройстве., получение информации о устройстве
ПОМОГИТЕ!, составление програмы
Java & Perl, Java & Perl
нужна прога$$$, нужна прога$$$
Здравствуйте., Рисование в окне апплета.
Getting started..., Слоны идут на север
biblioteki vektornoj grafiki k SWING
Как Вы относитесь к курящим девушкам?
Прежде чем задать вопрос, прочтите это!
Работа с Threads. Давайте разберёмся, Получиться неплохой компонент.
Документация и книги по Java, Давайте соберём ссылки
Каким IDE вы пользуетесь, при программировании на Java
Бесплатное ПО на Java
Каким компилятором вы пользуетесь
Прежде чем задать вопрос, прочтите это!
FAQ по JAVA, Вопросы и ответы
JNI и потоки
Как "поженить" эклипсу с ant'ом?, Или делать JAR напрямую в эклипсе?
Вопрос о возможностях JBuilder2005
Eclipse - проект со своим разбросом файлов, по package'ам
Код неправильно читает файл
JBuilder2005 & XDoclet, как-бы срастить вместе?
Что такое hibernate ?
Hibernate & BLOB DB field, подскажите - во что выливается BLOB
разработка плагина под еклипсе.., у кого-нибудь есть опыт?
jar в IDEA
Программное представление HTML элементов, существует ли в природе?
Проблема при запуске программы, Помогите
добавление библиотеки mail, Использую NetBeans
генерация SHA подписи, при build-е проекта (eclipse/ant)
build большого проекта, eclipse
BufferedImage
Посоветуйте framework!, Нужен framework для создании выборок

Платные хостинги     Раскрутка сайта     Книги по программированию


Программное представление HTML элементов, существует ли в природе?

Только здесь 1000 посетителей на Ваш сайт всего за 3 у.е.!

- Недавно пришла в голову вот какая мысль, а ведь можно разработать программную модель для всех HTML элементов, и создавать страницы, используя код примерно такого вида:Код public class InvoicePage extends HtmlPage{  public InvoicePage(URL url)  {    super(url);  }  public void init(HttpServletRequest request, HttpServletResponse response)  {    super(request, response);    long invoiceNo = request.getParameter("invno");    this.addStyle("/style.css");    this.addStyle("/invoice.css");    this.setTitle("Invoice " + invoiceNo);    Body body = new Body();    body.addAttribute("class", "outer");    body.addAttribute("bgcolor", "lightgray");    this.setBody(body);    List columns = someResourceLocator.getInvoiceColumns();    List items = anotherResourceLocator.getInvoiceItems(invoiceNo);    Table table = new Table(columns);    for (int i = 0, n = items.size(); i < n; i++)    {      InvoiceItem item = (InvoiceItem) items.get(i);      Iterator iter = columns.iterator();      TR tr = new TR();      while (iter.hasNext())      {        Column col = (Column) iter.next();        TD td = new TD(item.get(col.getName()));        tr.add(td);      }      table.add(tr);    }...// и т.д. и т.п....  }}highlightSyntax('javaWNkMmQ','java');Я не хочу сказать, что это было бы очень удобным способом программирования стрвниц, но если не доводить сей подход до крайности и абсурда, а использовать отдельные HTML элементы в таком представлении для автоматизации отдельных задач (например, автогенерация HTML форм из метаданных), то такая вещь в связке, например, с шаблонным движком - могла бы расширить арсенал программиста.Ну и вот. Так вот я и думаю, наверняка кто-то такое уже разрабатывал. Не может быть, что такая очевидная идея не пришла в голову еще кому-нибудь. Поэтому вопрос: если слышали про такие штуки - колитесь, пожалуйста

- Для определенных задач вполне удобно. В Ruby такое есть и, не скрою, это иногда очень помогает.

- Element Construction Set - похоже на то, что ты описываешь. При использовании получается такой код:Код Html html = new Html()              .addElement(new Head()                  .addElement(new Title("Demo")))              .addElement(new Body()              .addElement(new H1("Demo Header"))              .addElement(new H3("Sub Header:"))              .addElement(new Font().setSize("+1")                         .setColor(HtmlColor.WHITE)                         .setFace("Times")                         .addElement("The big dog & the little cat chased each other.")));out.println(html.toString()); // or write to the outputstream directlyoutput(out);highlightSyntax('javagwYzM4','java');

- А разве тема Velocity не о таком варианте ? Хотя я давно очень читал - может и не понял точно все тогда.

- Нет-нет, это совсем разные вещи. Я говорю о библиотеке, где все HTML элементы были бы представлены в виде классов: Head, Body, P, UL, LI, Table, TR, TD и т. д. То есть каждый класс сам знает, как рендерить себя в HTML, с учетом всего того, что в него напихали.А про Velocity - обязательно напишу. Похоже, народ так и не понимает, в чем от него кайф. А кайф - огромный!Шмель - в самую точку. Администрация, прошу представить товарища к награде

- А мы всё ждём-с...Цитата (Stampede @ 7.6.2005, 21:52)Шмель - в самую точку. Администрация, прошу представить товарища к награде smileНаграждён почетным орденом "+".

- Георгиевский крест?

- Что? Крест имени меня? Спасибо, конечно, но, право же, не стоит... Stampede Есть закрепленный топик на тему Velocity: http://forum.vingrad.ru/index.php?showtopic=44988. Есть желание - дополни, скажу спасибу.

- Дак, я ж знаю. Я же именно там и обещался. И выполнил - встречайте: Для чего же все-таки нужна Velocity

- Кстати, вот пример ситуации, где подобный класс будет весьма полезным. Посмотрите на тег <head>. В динамическом проложении он, как правило, хранится в отдельном файле и подключается при помощи какой-нибудь include в той или иной форме форме.Но содержимое тега <head> само по себе переменное и зависит от страницы. Хорошо, если изменяется только Title, тогда все относительно просто. А что если нужен разный Content-Tipe, например в многоязыковом проекте? А что если CSS подключается разный? А если нужно больше одного CSS файла? Передавать списком и итерировать в коде шаблона? Плюс та же фигня с мета параметрами http-equiv. Не слишком ли громоздко получится?А теперь представим, что у нас есть класс Head с такими методами:Код public class Head extends Element{  public Head() {}  public Head(String contentType, String title) {// детали опускаются}  public void setContentType(String type) {}  public void setKeywords(String keywords) {}  public void setDescription(String description) {}  public void addHttpEquiv(String name, String content) {}  public void addCss(String cssPath) {}}highlightSyntax('javaMzNmM2','java');Тогда мы запросто все это можем подготовить в классе, отвечающем за подготовку данных для шаблона, а в самом шаблоне просто одной строчкой сослаться на объект класса Head:Код $headhighlightSyntax('htmlGM4OTQ','html');По соглашению Velocity при такой записи вызывается метод toString() ссылемого объекта. Который в случае класса Head должен делать то, что от него и ожидается: рендерить себя в HTML.Куль? Да, куль. Тут опять надо заметить, что наиболее естественным образом такой фокус можно осуществить, если приложение спроектировано в идеологи Velocity (см. статью о Velocity)Теперь смотрим на то, как класс Head реализован в библиотеке Jakarta ECS (Element Construction Set). А очень тупо он реализован. Слшком общО. Описания API в Javadoc в онлайне для него не нашел, поэтому привожу по той документации, что идет в пакете:Код addElement(Element element)addElement(String strelem)addElement(String hash, Element element)addElement(String hash, String strelem)removeElement(String hash)setProfile(String profile)highlightSyntax('javaMjYxZD','java');Нахера?! Вы же не generic API создаете, у вас же конкретная библиотека классов. Сделайте так, чтобы ею было удобно пользоваться! Дайте мне convenience методов. Чтобы можно было одной строчкой добавить CSS или там HttpEquiv - неужели так трудно? И ведь явно для себя писали, не для дяди, а вот поди ж ты.Короче, блин, как меня это уже задрало. Ни на кого нельзя положиться, все приходится делать самому. И буду делать. А кому щас легко

- [выжидательно смотрит]

- Domestic уже сказал Просто я так и не поверил, что это лучше, чем использовать Expression Language. Но это уже мои проблемы. Потом пощупаю сам и решу.

- Так давайте же обсуждать! Я же завершаю статью приглашением к обсуждению. В этом ведь главный пойнт нашего здесь тусения. А может я действительно неправ? Может, я чего-то важного не понимаю в этой жизни?Цитата (Lamer George @ 10.6.2005, 20:03)Domestic уже сказалЯ, между прочим не о регалиях, а о простом человеческом спасибе, которое было обещано. Старался, как-никак

- Спасибо! И даже большое! А насчет обсуждения - пока я сам не попробовал, я не смогу квалифицированно вести дискуссию. Так что обождем.

- Твоей статье даже реклама была

Интернет казино     Онлайн игры     Увеличение члена     Купить DVD


Главная страница | программирование 1с предприятие | язык программирования pascal | виды программирования | программирование процессоров | язык программирования 1с | программирование assembler | методология программирования | прикладное программирование | программирование turbo pascal | парадигмы программирования | удаленная программирование | программирование управления | справочник программирования | задачи математическому программированию | методики программирования | программирование outlook | компьютерное программирование | программирование деревья | высокоуровневое программирование | программирование delphi скачать | программирование сигнализации | теория языков программирования | программирование микропроцессоров | обоснование языка программирования | программирование win32 | Ссылки

Все про программирование управления