SlideShare a Scribd company logo
1CONFIDENTIAL
Rich wicket
Apache wicket extensions framework
APRIL 4, 2015
2CONFIDENTIAL
Почему Wicket?
1. Open-source and free
2. Быстрая разработка, Экономит время и деньги
3. Apache wicket компонент ориентированный веб фреймворк
4. Поддержка наследование на уровне java и html markup.
5. Wicket наследует интерфейсы swing и awt.
6. Html markup не содержит логики, вся логика пишется в java
и js.
3CONFIDENTIAL
Основные компоненты Wicket
• WebPage – has markup
• Panel – has markup
• WebMarkupContainer
• Behaviour
• Form
• IModel
4CONFIDENTIAL
WebPage & наследование
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html
xmlns:wicket="http://wicket.apache.org">
<head>
</head>
<body>
<div class="container">
<div wicket:id="header"></div>
<wicket:child/>
<div wicket:id="footer"></div>
</div>
</body>
</html>
public class BasePage extends WebPage {
public BasePage(PageParameters parameters) {
super(parameters);
add(new HeaderPanel("header"));
add(new FooterPanel(“footer"));
}
}
BasePage.html BasePage.java
5CONFIDENTIAL
WebPage & наследование
public class HomePage extends BasePage {
public HomePage(PageParameters parameters) {
super(parameters);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<wicket:extend
xmlns:wicket="http://wicket.apache.org">
<!--Home page content-->
</wicket:extend>
HomePage.html BasePage.java
6CONFIDENTIAL
Panel & наследование
<?xml version="1.0" encoding="UTF-8"?>
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<!—Some base content-->
<wicket:child/>
<div wicket:id="somePanel"></div>
</wicket:panel>
public class BasePanel extends Panel {
public BasePanel(String id) {
super(id);
add(new SomePanel(“somePanel"));
}
}
public class HomePage extends BasePage {
public HomePage(PageParameters parameters) {
super(parameters);
add(new MyBehavior());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<wicket:extend xmlns:wicket="http://wicket.apache.org">
<!--Home page content-->
</wicket:extend>
BasePanel.html BasePanel.java
MyPanel.html MyPanel.java
7CONFIDENTIAL
Behavior
public class MyBehaviour extends Behavior {
@Override
public void onConfigure(final Component component) {
super.onConfigure(component);
component.add(new AttributeAppender("style", Model.of("width:150px"), ";"));
component.add(new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget target) {
component.setDefaultModel(Model.of("clicked"));
target.add(component);
}
});
}
@Override
public void onComponentTag(Component component, ComponentTag tag) {
super.onComponentTag(component, tag);
tag.put("class", "clicked-class");
}
}
8CONFIDENTIAL
Hmm… But what about js inheritance?
9CONFIDENTIAL
Why Rich Wicket
• Автоматическое включение javascript класса для wicket Panel (помимо html
markup), MarkupContainer, Behaviour
• Автоматическое наследование js классов при наследовании wicket java
компонентов
• Для каждого экземпляра wicket java класса создается его собственный
экземпляра js класса, устанавливается связь между ними
• Получение модели wicket java компоненты в его js экземпляре
10CONFIDENTIAL
Как это работает?
public class MyPanel extends DcsPanel<MyModel> {
public MyPanel(String id, MyModel myModel) {
super(id, myModel);
}
}
(function ($) {
var MyPanel = window.DcsPanel.$extend({
__init__: function (modelObject, markupId) {
this.$super(modelObject, markupId);
},
onDomReady: function () {
this.$super('onDomReady');
var _self = this;
var myModel = this.modelObject;
var $domElement = this.getComponent();
});
window.MyPanel = MyPanel;
})(jQuery);
appendOnLoadJs("myMethod('stringVal')");
addAjaxPostLitenner("postButton",
new AjaxPostEventListener<MyModel>(MyModel.class) {
@Override
public Object actionWithCallback(MyModel pojo) {
pojo.setValue("new new new value");
return pojo;
}
});
}
this.ajaxPost("postButton", myModel, new function(callbackPojo) {
alert(callbackPojo.value);
});
myMethod: function(value) {
// do something with value
}
11CONFIDENTIAL
Применение
• Разработана богатая библиотека wicket компонентов и поведений
• Полная интеграция с twitter bootstrap
• Ecommerce template
12CONFIDENTIAL
Спасибо
Давит Мкртчян

More Related Content

Viewers also liked

Coursera 2015 - Введение в биоинформатику
Coursera 2015 - Введение в биоинформатикуCoursera 2015 - Введение в биоинформатику
Coursera 2015 - Введение в биоинформатикуAndrey Zhelankin
 
Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...
Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...
Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...bigdatabm
 
Как автоматизировать аналитику рекламных кампаний
Как автоматизировать аналитику рекламных кампанийКак автоматизировать аналитику рекламных кампаний
Как автоматизировать аналитику рекламных кампаний
Netpeak
 
Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...
Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...
Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...bigdatabm
 
Управление проектами в Cactussoft
Управление проектами в CactussoftУправление проектами в Cactussoft
Управление проектами в Cactussoft
Anna Barzakovskaya
 
Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...
Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...
Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...bigdatabm
 
282 инструмента и сервиса мониторинга социальных медиа
282 инструмента и сервиса мониторинга социальных медиа282 инструмента и сервиса мониторинга социальных медиа
282 инструмента и сервиса мониторинга социальных медиа
Buzzware
 
Командоварение. Хозяйкам на заметку.
Командоварение. Хозяйкам на заметку.Командоварение. Хозяйкам на заметку.
Командоварение. Хозяйкам на заметку.
Yury Shilyaev
 
Codename one epam
Codename one epamCodename one epam
Codename one epam
Victoria Astapenko
 
Fish.pptx
Fish.pptxFish.pptx
Обучение Linux в корпоративном секторе
Обучение Linux в корпоративном сектореОбучение Linux в корпоративном секторе
Обучение Linux в корпоративном секторе
Vladimir Shakhov
 
New Level in Management Skills: How to Reach it?
New Level in Management Skills: How to Reach it? New Level in Management Skills: How to Reach it?
New Level in Management Skills: How to Reach it?
Alexander Abolmasov
 
Баранова А. Облачные биомаркеры патологических состояний и процессов
Баранова А. Облачные биомаркеры патологических состояний и процессовБаранова А. Облачные биомаркеры патологических состояний и процессов
Баранова А. Облачные биомаркеры патологических состояний и процессовbigdatabm
 
Roadmap бессмертие final
Roadmap бессмертие finalRoadmap бессмертие final
Roadmap бессмертие final
Юрий Каргаполов
 
Выстраиваем фреймворк обучения от команды до компании
Выстраиваем фреймворк обучения от команды до компанииВыстраиваем фреймворк обучения от команды до компании
Выстраиваем фреймворк обучения от команды до компании
Yury Shilyaev
 
Эффективность рекламных кампаний. Контроль работы сотрудников. Ефимова Дарья
Эффективность рекламных кампаний. Контроль работы сотрудников. Ефимова ДарьяЭффективность рекламных кампаний. Контроль работы сотрудников. Ефимова Дарья
Эффективность рекламных кампаний. Контроль работы сотрудников. Ефимова Дарья
metrosphera
 
Доступность банковских телефонных служб
Доступность банковских телефонных службДоступность банковских телефонных служб
Доступность банковских телефонных служб
NAUMEN. Информационные системы управления растущим бизнесом
 
«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...
«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...
«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...
Академия интернет-маркетинга «WebPromoExperts»
 
Prote on moscow
Prote on moscowProte on moscow
Prote on moscow
Biorad Pro
 
It meet up 2015 biology bioinformatics
It meet up 2015   biology bioinformaticsIt meet up 2015   biology bioinformatics
It meet up 2015 biology bioinformatics
Victoria Astapenko
 

Viewers also liked (20)

Coursera 2015 - Введение в биоинформатику
Coursera 2015 - Введение в биоинформатикуCoursera 2015 - Введение в биоинформатику
Coursera 2015 - Введение в биоинформатику
 
Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...
Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...
Иванова М.Е. Организация молекулярной диагностики наследственных глазных забо...
 
Как автоматизировать аналитику рекламных кампаний
Как автоматизировать аналитику рекламных кампанийКак автоматизировать аналитику рекламных кампаний
Как автоматизировать аналитику рекламных кампаний
 
Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...
Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...
Пятницкий М.А. Подбор персонализированной противоопухолевой терапии путем сис...
 
Управление проектами в Cactussoft
Управление проектами в CactussoftУправление проектами в Cactussoft
Управление проектами в Cactussoft
 
Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...
Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...
Осадчий А.Е. Анализ многомерных магнито- и электроэнцефалографических данных ...
 
282 инструмента и сервиса мониторинга социальных медиа
282 инструмента и сервиса мониторинга социальных медиа282 инструмента и сервиса мониторинга социальных медиа
282 инструмента и сервиса мониторинга социальных медиа
 
Командоварение. Хозяйкам на заметку.
Командоварение. Хозяйкам на заметку.Командоварение. Хозяйкам на заметку.
Командоварение. Хозяйкам на заметку.
 
Codename one epam
Codename one epamCodename one epam
Codename one epam
 
Fish.pptx
Fish.pptxFish.pptx
Fish.pptx
 
Обучение Linux в корпоративном секторе
Обучение Linux в корпоративном сектореОбучение Linux в корпоративном секторе
Обучение Linux в корпоративном секторе
 
New Level in Management Skills: How to Reach it?
New Level in Management Skills: How to Reach it? New Level in Management Skills: How to Reach it?
New Level in Management Skills: How to Reach it?
 
Баранова А. Облачные биомаркеры патологических состояний и процессов
Баранова А. Облачные биомаркеры патологических состояний и процессовБаранова А. Облачные биомаркеры патологических состояний и процессов
Баранова А. Облачные биомаркеры патологических состояний и процессов
 
Roadmap бессмертие final
Roadmap бессмертие finalRoadmap бессмертие final
Roadmap бессмертие final
 
Выстраиваем фреймворк обучения от команды до компании
Выстраиваем фреймворк обучения от команды до компанииВыстраиваем фреймворк обучения от команды до компании
Выстраиваем фреймворк обучения от команды до компании
 
Эффективность рекламных кампаний. Контроль работы сотрудников. Ефимова Дарья
Эффективность рекламных кампаний. Контроль работы сотрудников. Ефимова ДарьяЭффективность рекламных кампаний. Контроль работы сотрудников. Ефимова Дарья
Эффективность рекламных кампаний. Контроль работы сотрудников. Ефимова Дарья
 
Доступность банковских телефонных служб
Доступность банковских телефонных службДоступность банковских телефонных служб
Доступность банковских телефонных служб
 
«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...
«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...
«Как автоматизировать аналитику рекламных кампаний». Вебинар WebPromoExperts ...
 
Prote on moscow
Prote on moscowProte on moscow
Prote on moscow
 
It meet up 2015 biology bioinformatics
It meet up 2015   biology bioinformaticsIt meet up 2015   biology bioinformatics
It meet up 2015 biology bioinformatics
 

Similar to Davit mkrtchyan rich wicket presentation

The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
Vitaly Baum
 
Watir&amp;web driver
Watir&amp;web driverWatir&amp;web driver
Watir&amp;web driver
qasib
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
buranLcme
 
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Anton Vidishchev
 
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Yandex
 
Cisco ACI как универсальная сеть для облачной инфраструктуры
Cisco ACI как универсальная сеть для облачной инфраструктурыCisco ACI как универсальная сеть для облачной инфраструктуры
Cisco ACI как универсальная сеть для облачной инфраструктуры
Cisco Russia
 
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
KazHackStan
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
JSib
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
NETFest
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
Дмитрий Бумов
 
Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePoint
Vitaly Baum
 
Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4
akrakovetsky
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиковMedia Gorod
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
Alexander Konduforov
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10Technopark
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
Igor Shkulipa
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
Dotnet saturday mvc_scaffolding
Dotnet saturday mvc_scaffoldingDotnet saturday mvc_scaffolding
Dotnet saturday mvc_scaffoldingCiklum Ukraine
 

Similar to Davit mkrtchyan rich wicket presentation (20)

The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 
Watir&amp;web driver
Watir&amp;web driverWatir&amp;web driver
Watir&amp;web driver
 
Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
 
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлениюCodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
 
Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3Test Driven Development in ASP.NET MVC 3
Test Driven Development in ASP.NET MVC 3
 
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
 
Cisco ACI как универсальная сеть для облачной инфраструктуры
Cisco ACI как универсальная сеть для облачной инфраструктурыCisco ACI как универсальная сеть для облачной инфраструктуры
Cisco ACI как универсальная сеть для облачной инфраструктуры
 
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
 
Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePoint
 
Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
WebMatrix
WebMatrixWebMatrix
WebMatrix
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
Dotnet saturday mvc_scaffolding
Dotnet saturday mvc_scaffoldingDotnet saturday mvc_scaffolding
Dotnet saturday mvc_scaffolding
 

More from Victoria Astapenko

Word2 vec epam
Word2 vec epamWord2 vec epam
Word2 vec epam
Victoria Astapenko
 
It meet up 1 0 лебедева, лоханов
It meet up 1 0 лебедева, лохановIt meet up 1 0 лебедева, лоханов
It meet up 1 0 лебедева, лоханов
Victoria Astapenko
 
трудные люди
трудные людитрудные люди
трудные люди
Victoria Astapenko
 
Management decisions 20150328
Management decisions 20150328Management decisions 20150328
Management decisions 20150328
Victoria Astapenko
 
04042015epam satroschenkov
04042015epam satroschenkov04042015epam satroschenkov
04042015epam satroschenkov
Victoria Astapenko
 
It meetup cd
It meetup cdIt meetup cd
It meetup cd
Victoria Astapenko
 
Mind map - pravuk
Mind map - pravukMind map - pravuk
Mind map - pravuk
Victoria Astapenko
 

More from Victoria Astapenko (7)

Word2 vec epam
Word2 vec epamWord2 vec epam
Word2 vec epam
 
It meet up 1 0 лебедева, лоханов
It meet up 1 0 лебедева, лохановIt meet up 1 0 лебедева, лоханов
It meet up 1 0 лебедева, лоханов
 
трудные люди
трудные людитрудные люди
трудные люди
 
Management decisions 20150328
Management decisions 20150328Management decisions 20150328
Management decisions 20150328
 
04042015epam satroschenkov
04042015epam satroschenkov04042015epam satroschenkov
04042015epam satroschenkov
 
It meetup cd
It meetup cdIt meetup cd
It meetup cd
 
Mind map - pravuk
Mind map - pravukMind map - pravuk
Mind map - pravuk
 

Davit mkrtchyan rich wicket presentation

  • 1. 1CONFIDENTIAL Rich wicket Apache wicket extensions framework APRIL 4, 2015
  • 2. 2CONFIDENTIAL Почему Wicket? 1. Open-source and free 2. Быстрая разработка, Экономит время и деньги 3. Apache wicket компонент ориентированный веб фреймворк 4. Поддержка наследование на уровне java и html markup. 5. Wicket наследует интерфейсы swing и awt. 6. Html markup не содержит логики, вся логика пишется в java и js.
  • 3. 3CONFIDENTIAL Основные компоненты Wicket • WebPage – has markup • Panel – has markup • WebMarkupContainer • Behaviour • Form • IModel
  • 4. 4CONFIDENTIAL WebPage & наследование <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns:wicket="http://wicket.apache.org"> <head> </head> <body> <div class="container"> <div wicket:id="header"></div> <wicket:child/> <div wicket:id="footer"></div> </div> </body> </html> public class BasePage extends WebPage { public BasePage(PageParameters parameters) { super(parameters); add(new HeaderPanel("header")); add(new FooterPanel(“footer")); } } BasePage.html BasePage.java
  • 5. 5CONFIDENTIAL WebPage & наследование public class HomePage extends BasePage { public HomePage(PageParameters parameters) { super(parameters); } } <?xml version="1.0" encoding="UTF-8"?> <wicket:extend xmlns:wicket="http://wicket.apache.org"> <!--Home page content--> </wicket:extend> HomePage.html BasePage.java
  • 6. 6CONFIDENTIAL Panel & наследование <?xml version="1.0" encoding="UTF-8"?> <wicket:panel xmlns:wicket="http://wicket.apache.org"> <!—Some base content--> <wicket:child/> <div wicket:id="somePanel"></div> </wicket:panel> public class BasePanel extends Panel { public BasePanel(String id) { super(id); add(new SomePanel(“somePanel")); } } public class HomePage extends BasePage { public HomePage(PageParameters parameters) { super(parameters); add(new MyBehavior()); } } <?xml version="1.0" encoding="UTF-8"?> <wicket:extend xmlns:wicket="http://wicket.apache.org"> <!--Home page content--> </wicket:extend> BasePanel.html BasePanel.java MyPanel.html MyPanel.java
  • 7. 7CONFIDENTIAL Behavior public class MyBehaviour extends Behavior { @Override public void onConfigure(final Component component) { super.onConfigure(component); component.add(new AttributeAppender("style", Model.of("width:150px"), ";")); component.add(new AjaxEventBehavior("click") { @Override protected void onEvent(AjaxRequestTarget target) { component.setDefaultModel(Model.of("clicked")); target.add(component); } }); } @Override public void onComponentTag(Component component, ComponentTag tag) { super.onComponentTag(component, tag); tag.put("class", "clicked-class"); } }
  • 8. 8CONFIDENTIAL Hmm… But what about js inheritance?
  • 9. 9CONFIDENTIAL Why Rich Wicket • Автоматическое включение javascript класса для wicket Panel (помимо html markup), MarkupContainer, Behaviour • Автоматическое наследование js классов при наследовании wicket java компонентов • Для каждого экземпляра wicket java класса создается его собственный экземпляра js класса, устанавливается связь между ними • Получение модели wicket java компоненты в его js экземпляре
  • 10. 10CONFIDENTIAL Как это работает? public class MyPanel extends DcsPanel<MyModel> { public MyPanel(String id, MyModel myModel) { super(id, myModel); } } (function ($) { var MyPanel = window.DcsPanel.$extend({ __init__: function (modelObject, markupId) { this.$super(modelObject, markupId); }, onDomReady: function () { this.$super('onDomReady'); var _self = this; var myModel = this.modelObject; var $domElement = this.getComponent(); }); window.MyPanel = MyPanel; })(jQuery); appendOnLoadJs("myMethod('stringVal')"); addAjaxPostLitenner("postButton", new AjaxPostEventListener<MyModel>(MyModel.class) { @Override public Object actionWithCallback(MyModel pojo) { pojo.setValue("new new new value"); return pojo; } }); } this.ajaxPost("postButton", myModel, new function(callbackPojo) { alert(callbackPojo.value); }); myMethod: function(value) { // do something with value }
  • 11. 11CONFIDENTIAL Применение • Разработана богатая библиотека wicket компонентов и поведений • Полная интеграция с twitter bootstrap • Ecommerce template