Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSP — с чего начать? 
V
    Опции темы
diablero
Дата 2.9.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Выбрал Apache Jakarta Commons FileUpload , поэкперементировал, позаливал файлы. В принципе его можно встроить в нашу архитектуру. 
С такой задачей я не сталкивался, поэтому отсутствует представление как это должно быть.
Осюда пару вопросов, какой визуальный хтмл редактор ты используешь, или посоветуешь? Чтобы под него сделать загрузку файлов.
Парочку из бесплатных, работающих в ие, опере и фф я посмотрел, но в них нужно разбираться и разбираться.

Картинки я решил хранить в ФС, а в базе пути. Имя брать то, с которым его загружают.

Про механизм активации. Это про тот когда, после регистрации, пользователю приходит уведомление на почту, он переходит по ссылке и учетная запись активируетсяsmile

Про кодировку. И при переходе на утф-8, осталась таже проблема. Т.е. добавляешь статью, просматриваешь, все нормально. А вот при повторном редактировании кодировка рушится.


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 17.9.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Итак, продолжаем.

Как я уже говорил, я сейчас сильно занят, но сериал все-таки нужно закончить.

Заканчивать будет на мажорной ноте - изготовлением механизма постраничного просмотра. Это очень важный компонент по двум причинам. Во-первых, он нужен, в том или ином виде, практически на любом динамическом вебсайте. Во-вторых, на этом примере мы продемонстрируем возможности компонентного подхода в рамках созданного нами фреймворка.

Прежде чем начать рассмотрение, предлагаю желающим высказаться в плане того, как мог бы быть устроен подобный механизм. Кроме того, хотелось бы услышать от diablero, как продвигается работа над вебсайтом в автономном режиме.

Время пошло.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 17.9.2007, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



В автономном режиме, по такой же причмне как и у тебя, сделанно не много. Я подправил кое-какие недоработки в механизме входа и регистрации и все свободное время занимался вопросом загрузки файлов и визуальным хтмл редактором. Выбор мой остановился на FCKeditor'е. И его переработке под свои нужды, поэтому с головой повяз в яваскрипте. 
Это все, сейчас, отойдет на второй план, сконцентрируюсь на мажорной ноте.smile
Теротечиски механизм понятен, необходимо делить пост на части, организовать  группу ссылок, позволяющих пользователю осуществить постраничный просмотр. А дальше, грубо говоря, темный лес. Нужно читать, думать...









 


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 17.9.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(diablero @  17.9.2007,  13:32 Найти цитируемый пост)
Теротечиски механизм понятен, необходимо делить пост на части


Погоди, мы, похоже, о разных вещих говорим. Ты, по-видимому, имеешь в виду разбивание длинного текста на секции. А я - о просмотре списков. Ну, к примеру, как на Винграде организован просмотр топиков в разделе. Второе-то явно важнее. Так что вопрос остается открытым: как представляешь себе реализацию.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 17.9.2007, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Эх, пол царства за умение не спать. Чуть было не написал, что не асилил.smile
Офрмлю свою мысль завтра


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
diablero
Дата 18.9.2007, 15:25 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Для постраничного просмотра, нам необходимы следующие данные:
  • Количество элементов
  • Номер активной страницы 
  • Количество навигационных ссылок
  • Количество элементов на активной странице
Количество элементов на активной странице известно, или задается пользователем. Назовем его N, выводим это количество элементов и группу ссылок для навигации, следующая часть списка выводится по формуле: 
  • для первой страницы: первые N
  • от номер предыдущей страницы на N до номер активной страцы*N
  • для последней страницы: последние N




--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 19.9.2007, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Хорошо, годидзе.

Теперь в соответствии с предложенным описанием создадим небольшой компонент. Назовем его (Surprise, surprise! smile) - Pager. В нем предусмотрим следующие поля:
  • int page (default: 1)
  • int size (default: 10)
  • int total

Кроме этого, нам понадобятся методы:
  • int getFrom()
  • int getTo()

Плюс аксессоры для указанных полей.

Пока задание на чистую арифметику. getTo() и getFrom() должны в зависимости от номера и размера страницы возвращать номер первого и последнего элемента страницы, чтобы их можно было использовать в надписях типа:

Статьи с 21 по 30

Не забываем про краевые случаи, "человеческую" нумерацию от 1 (а не программистскую от нуля), а также теоретическую возможность выхода page за пределы total (например, если в момент вывода страницы было 71 статей, и последний линк, соответственно, указывал на 8-ю страницу, а потом одну статью удалили, юзер кликнул на последнюю, а там ничего нет).

Кроме этого, нам в дальнейшем понадобится программное представление HTML-ссылки, поэтому начнем с простого класса Link с конструктором Link(String text, String href) и методом toString(), который возвращает код ХТМЛ.

Желательно все это с тестовым кодом и результатами тестов.

Просю.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 19.9.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Готово:
Код

public class PagerViewer {
    private int currentPage = 1;
    private int size = 10;
    private int total;

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public int getCurrentPage() {
        return currentPage;
    }
    public void setSize(int size) {
        this.size = size;
    }
    public int getSize() {
        return size;
    }
    public void setTotal(int total) {
        this.total = total;
    }
    public int getTotal() {
        return total;
    }
    public int getFrom() {
        return currentPage==1 ? 1 : (currentPage-1)*size+1;
    }
    public int getTo() {
        return (currentPage*size) > total ? total : currentPage*size;
    }
}

Код

public class PagerViewerTest {
    public static void main(String arg[]) {
        System.out.println("========== Тест 1 =========");
        PagerViewer viewer = new PagerViewer();
        viewer.setSize(10);
        viewer.setTotal(34);
        viewer.setCurrentPage(1);
        System.out.print("c "+viewer.getFrom());
        System.out.print(" по "+viewer.getTo() +"\n");
        viewer.setCurrentPage(2);
        System.out.print("c "+viewer.getFrom());
        System.out.print(" по "+viewer.getTo() +"\n");
        viewer.setCurrentPage(3);
        System.out.print("c "+viewer.getFrom());
        System.out.print(" по "+viewer.getTo() +"\n");
        viewer.setCurrentPage(4);
        System.out.print("c "+viewer.getFrom());
        System.out.print(" по "+viewer.getTo() +"\n");

        System.out.println("========== Тест 2 =========");
        viewer = new PagerViewer();
        viewer.setSize(20);
        viewer.setTotal(34);
        viewer.setCurrentPage(1);
        System.out.print("c "+viewer.getFrom());
        System.out.print(" по "+viewer.getTo() +"\n");
        viewer.setCurrentPage(2);
        System.out.print("c "+viewer.getFrom());
        System.out.print(" по "+viewer.getTo() +"\n");

        System.out.println("========== Тест 3 =========");
        viewer = new PagerViewer();
        viewer.setSize(20);
        viewer.setTotal(15);
        viewer.setCurrentPage(1);
        System.out.print("c "+viewer.getFrom());
        System.out.print(" по "+viewer.getTo() +"\n");
    }
}

Результат теста:
Код

========== Тест 1 =========
c 1 по 10
c 11 по 20
c 21 по 30
c 31 по 34
========== Тест 2 =========
c 1 по 20
c 21 по 34
========== Тест 3 =========
c 1 по 15

Про Link не допонял, поэтому пока так:
Код

public class Link {
    private String text;
    private String href;
    public Link(String text, String href) {
        this.text = text;
        this.href = href;
    }
    public String toString() {
        return "<a href=\""+href+"\">"+text+"</a>";
    }
}


Это сообщение отредактировал(а) diablero - 19.9.2007, 20:01


--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 19.9.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Ага, знач разбираем.

По названию: неужели PageViewer лучше чем Pager? Это ведь у нас не просмотрщик, а именно разбиватель на страницы. Если быть уж совсем дотошным, процесс разбиения на страницы на техническом жаргоне называется pagination, Но нередко встречается и просто paging. Соответственно, компонент, который этим занимается, логично было бы назвать или Paginator, или Pager. Я предложил то что попроще, а ты выбирай, что тебе больше нравится. Но PageViewer убери.

Далее, удобно было бы завести такие конструкторы: Pager(int pageNum) и Pager(int pageNum, int pageSize).

Про Link ты все понял правильно, только реализовал немного небрежно. Так, в случае null-значения одного из аргументов переменной лучше присваивать пустую строку. А то потом при анализе логов будешь удивляться, с чего это народ у тебя пытается попасть в /null. Подумаешь еще, что Упячка началась smile

А теперь самое главное. Основная функция этого компонента - это выдавать список линков на страницы. Что-нибудь типа такого:

Код

public List<Link> getPageLinks();


Чтобы ее реализовать, нужно прежде всего решить для себя, как будут выглядеть УРЛы страниц. Я предлагаю такой формат:

<base-url>[&page=<page-number>][&size=<page-size>]

Например:
  • /section/sql/ - это первая страница списка статей подраздела;
  • /section/sql/?page=3&size=50 - это 3-я страница того же списка, с переопределенным размером;
  • /section.shtml?id=123&page=5 - это 5-я страница дефолтного размера; замечаем, что в отличие от ЧПУ, использованных в предыдущих двух примерах, здесь базовый УРЛ сам содержит параметры в части query - в точности как сделано у тебя.

Отсюда следующее задание:
  • добавить в класс Pager переменную baseUrl вместе с аксессорами;
  • реализовать метод getPageLinks().

Ждем-с.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 19.9.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Код

public class Pager {
    private int currentPage = 1;
    private int pageSize = 10;
    private int total;
    private String baseUrl;

    public Pager() {

    }
    public Pager(int currentPage) {
        this.currentPage = currentPage;
    }
    public Pager(int currentPage, int pageSize) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public int getCurrentPage() {
        return currentPage;
    }
    public void setSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getSize() {
        return pageSize;
    }
    public void setTotal(int total) {
        this.total = total;
    }
    public int getTotal() {
        return total;
    }
    public int getFrom() {
        return currentPage==1 ? 1 : (currentPage-1)*pageSize+1;
    }
    public int getTo() {
        return (currentPage*pageSize) > total ? total : currentPage*pageSize;
    }
    public void SetBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }
    public String getBaseUrl() {
        return baseUrl;
    }
    public ArrayList<Link> getPageLinks() {
        int pageCount = (total%pageSize==0) ? total/pageSize : total/pageSize+1;
        ArrayList<Link> pageLinks = new ArrayList<Link>(pageCount);
        for(int i=1; i<=pageCount; i++) {
            String url = "page="+i+"&size="+pageSize;
            if(baseUrl.contains("?")) {
                url = baseUrl+"&"+url;
            } else {
                url = baseUrl+"?"+url;
            }
            Link link = new Link("["+i+"]",url);
            pageLinks.add(link);
        }
        return pageLinks;
    }
}

Код

========== Тест 1 =========
c 1 по 10
c 11 по 20
c 21 по 30
c 31 по 34
Links:
<a href="/section/sql/?page=1&size=10">[1]</a>
<a href="/section/sql/?page=2&size=10">[2]</a>
<a href="/section/sql/?page=3&size=10">[3]</a>
<a href="/section/sql/?page=4&size=10">[4]</a>
========== Тест 2 =========
c 1 по 20
c 21 по 34
Links:
<a href="/section.shtml?id=123&page=1&size=20">[1]</a>
<a href="/section.shtml?id=123&page=2&size=20">[2]</a>

Как ты смотришь на то, чтобы в линк все время подставлять size, чтобы убрать лишние проверки?

Добавлено через 7 минут и 10 секунд
Цитата(Stampede @  19.9.2007,  20:26 Найти цитируемый пост)
Подумаешь еще, что Упячка началась

А чего это такое? Баг?



--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 19.9.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Цитата(diablero @  19.9.2007,  13:20 Найти цитируемый пост)
Как ты смотришь на то, чтобы в линк все время подставлять size, чтобы убрать лишние проверки?


Да пуфик, пускай будет.

Замечания:
  • сеттер для baseUrl начинается с большой буквы;
  • УРЛ для текущей страницы лучше оставлять пустым: это, во-первых, предотвратит ненужные переходы по тому же адресу, а во-вторых, даст зацепку для последующего выделения линка текущей страницы средствами CSS;
  • текст линка лучше не заключать в квадратные скобки; мало ли ты как в дальнейшем решишь оформить это дело... правильнее делать это CSS'ом.
Но в целом пойдет. Как ты уже догадался, пользоваться этим компонентом очень легко:

Код

#if ($pager && $pager.pageLinks.size > 1)
    <div class="pager-title">Статьи с $pager.from по $pager.to</div>

    <!-- здесь выводишь список статей -->

    <div class="pager-links">Страницы:
    #foreach ($link in $pager.pageLinks)
        $link
    #end
    </div>
#end
</div>


Ну как, эхфектно?

Ну и все, и остается только немного навести глянец. Следующее задание такое: продумай и реализуй способ сделать так, чтобы при большом количестве страниц выводилось только по N ссылок слева и справа от текущего номера страницы. При этом чтобы всегда был доступ к первой и последней страницам. N пусть задается сеттером, имя для переменной придумай сам.

Поехали.

Добавлено через 3 минуты и 25 секунд
Цитата(diablero @  19.9.2007,  13:20 Найти цитируемый пост)
А чего это такое? Баг?


Это скорее заболевание, вызываемое укусом этого бага: http://upyachka.ru/ smile


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 19.9.2007, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Замечания внял и исправил. Завтра начну работу над новым заданием, и все выложу.



--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
diablero
Дата 20.9.2007, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Цитата(Stampede @  19.9.2007,  22:56 Найти цитируемый пост)
Ну как, эхфектно?

да, мне нравитьсяsmile

Код

public class Pager {
    private int currentPage = 1;
    private int pageSize = 10;
    private int cutPageLinks = 3;
    private int total;
    private String baseUrl;
    private ArrayList<Link> pageLinks;

    public Pager() {

    }

    public Pager(int currentPage) {
        this.currentPage = currentPage;
    }

    public Pager(int currentPage, int pageSize) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setCutPageLinks(int cutPageLinks) {
        this.cutPageLinks = cutPageLinks;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getTotal() {
        return total;
    }

    public int getFrom() {
        return currentPage == 1 ? 1 : (currentPage - 1) * pageSize + 1;
    }

    public int getTo() {
        return (currentPage * pageSize) > total ? total : currentPage * pageSize;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

    public String getBaseUrl() {
        return baseUrl;
    }

    public ArrayList<Link> getPageLinks() {
        int pageCount = (total % pageSize == 0) ? total / pageSize : total / pageSize + 1;
        if (pageCount > 10) {
            Link link;
            pageLinks = new ArrayList<Link>();
            for (int i = 1; i <= cutPageLinks; i++) {
                link = new Link(String.valueOf(i), getUrl(i));
                pageLinks.add(link);
            }
            link = new Link("...", getUrl(pageCount/2));
            pageLinks.add(link);
            for (int i = pageCount-cutPageLinks; i<pageCount; i++) {
                link = new Link(String.valueOf(i), getUrl(i));
                pageLinks.add(link);
            }
        } else {
            pageLinks = new ArrayList<Link>(pageCount);
            for (int i = 1; i <= pageCount; i++) {
                Link link = new Link(String.valueOf(i), getUrl(i));
                pageLinks.add(link);
            }
        }
        return pageLinks;
    }
    private String getUrl(int pageIndex) {
        String url = "page=" + pageIndex + "&size=" + pageSize;
        if (pageIndex == currentPage) {
            url = "";
        } else {
            url = baseUrl + ((baseUrl.contains("?") == true) ? "&" + url : "?" + url);
        }
        return url;
    }
}

Наверно еще нужно будет добавить переменную, чтобы можно было задавать при каком количестве использовать сокращенный вид




--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Stampede
Дата 20.9.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



diablero, что за странное "обрезание"? Ты что, первый день в инете?

Ты можешь сделать вот такой вывод (например, принимая pageCount = 12, currentPage = 7 и sidePages = 2)?

1 ... 5 6 7 8 9 ... 12

Так чтобы при смыкании с крайними значениями (например, при currentPage = 11) получалось без лишнего многоточия:

1 ... 9 10 11 12

Ну посмотри хотя бы как на Винграде сделано. Или там в гугле.


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
diablero
Дата 21.9.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 3.12.2006
Где: Аркхэм

Репутация: 2
Всего: 5



Да...ступил я не слабо. Алгоритм то не сложный, ща перепишу.

Добавлено через 10 минут и 41 секунду
Во..как в Винграде
Код

public ArrayList<Link> getPageLinks() {
        int pageCount = (total % pageSize == 0) ? total / pageSize : total / pageSize + 1;
        if (pageCount > 12) {
            Link link;
            pageLinks = new ArrayList<Link>();
            
            int from = (currentPage-cutPageLinks) <1 ? 1 : currentPage-cutPageLinks;
            int to = (currentPage+cutPageLinks) > pageCount ? pageCount : currentPage+cutPageLinks;

            if(from!=1) {
                link = new Link(String.valueOf(1), getUrl(1));
                pageLinks.add(link);
                link = new Link("...", null);
                pageLinks.add(link);
            }
            for(; from<=to; from++) {
                link = new Link(String.valueOf(from), getUrl(from));
                pageLinks.add(link);
            }
            if(to!=pageCount) {
                link = new Link("...", null);
                pageLinks.add(link);
                link = new Link(String.valueOf(pageCount), getUrl(pageCount));
                pageLinks.add(link);
            }

        } else {
            pageLinks = new ArrayList<Link>(pageCount);
            for (int i = 1; i <= pageCount; i++) {
                Link link = new Link(String.valueOf(i), getUrl(i));
                pageLinks.add(link);
            }
        }
        return pageLinks;
    }



--------------------
Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.