А вот и ссылка на него:
http://opalev.blogspot.com/
Visual Web JSF и не только
Маленькие заметки, можно сказать шпаргалки для самого себя. В основном, о фреймворке Visual Web JavaServer Faces.
понедельник, 4 октября 2010 г.
вторник, 27 июля 2010 г.
Creating and getting cookie. Как создать и взять куки.
Приведу сразу часть кода из своего файла по управлению кукки:
/**
* Здесь я создаю кукки, который создает URL для элемента гиперссылка.
*/
public void createRegionPathCookie(Integer RegionId) {
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
Cookie cookie = new Cookie("RegionPath", "/w-info/faces/info/region.jsp?subjectid=0&id=" + RegionId + "&sort=0");
cookie.setPath("/w-info/");
cookie.setMaxAge(31536000);
cookie.setComment("Cookie with Path to remembered Region");
httpServletResponse.addCookie(cookie);
}
/**
* Здесь я создаю кукки, который добавляет ID выбранного пользователем
* региона, который в последующем используется в предыдушем коде.
*/
public void createRegionIdCookie(Integer RegionId) {
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
Cookie cookie = new Cookie("RegionId", RegionId.toString());
cookie.setPath("/w-info/");
cookie.setMaxAge(31536000);
cookie.setComment("Cookie with id of Region");
httpServletResponse.addCookie(cookie);
}
/**
* А вот таким образом я беру значение кукки созданного в первом коде.
*/
public String getRegionPathCookie() {
String regionPath = "";
HttpServletRequest httpServletRequest = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
Cookie[] cookies = httpServletRequest.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equalsIgnoreCase("RegionPath")) {
regionPath = cookies[i].getValue();
}
}
}
return regionPath;
}
Для того, чтобы удалить кукки, нужно просто поставить ему setMaxAge(0);
Самое интересное, что я заметил, а затем и прочитал в другом месте, дак это то, что только что созданные кукки не могут быть использованы на этой же странице. Необходимо заставить пользователя обновить страницу, либо придумать что-то другое. Я это "другое" уже придумал и, скорее всего, позже выложу. Проблема заключалась в удалении кукки с ID и MD5 строкой пользователей, при нажатии кнопки выход, необходимо было скрыть одну панельку (приветствие юзера) и показать другую (инфо с регистраицей и входом), но отображение этих панелей как раз и зависело от состояния кукки.
/**
* Здесь я создаю кукки, который создает URL для элемента гиперссылка.
*/
public void createRegionPathCookie(Integer RegionId) {
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
Cookie cookie = new Cookie("RegionPath", "/w-info/faces/info/region.jsp?subjectid=0&id=" + RegionId + "&sort=0");
cookie.setPath("/w-info/");
cookie.setMaxAge(31536000);
cookie.setComment("Cookie with Path to remembered Region");
httpServletResponse.addCookie(cookie);
}
/**
* Здесь я создаю кукки, который добавляет ID выбранного пользователем
* региона, который в последующем используется в предыдушем коде.
*/
public void createRegionIdCookie(Integer RegionId) {
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
Cookie cookie = new Cookie("RegionId", RegionId.toString());
cookie.setPath("/w-info/");
cookie.setMaxAge(31536000);
cookie.setComment("Cookie with id of Region");
httpServletResponse.addCookie(cookie);
}
/**
* А вот таким образом я беру значение кукки созданного в первом коде.
*/
public String getRegionPathCookie() {
String regionPath = "";
HttpServletRequest httpServletRequest = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
Cookie[] cookies = httpServletRequest.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equalsIgnoreCase("RegionPath")) {
regionPath = cookies[i].getValue();
}
}
}
return regionPath;
}
Для того, чтобы удалить кукки, нужно просто поставить ему setMaxAge(0);
Самое интересное, что я заметил, а затем и прочитал в другом месте, дак это то, что только что созданные кукки не могут быть использованы на этой же странице. Необходимо заставить пользователя обновить страницу, либо придумать что-то другое. Я это "другое" уже придумал и, скорее всего, позже выложу. Проблема заключалась в удалении кукки с ID и MD5 строкой пользователей, при нажатии кнопки выход, необходимо было скрыть одну панельку (приветствие юзера) и показать другую (инфо с регистраицей и входом), но отображение этих панелей как раз и зависело от состояния кукки.
четверг, 22 июля 2010 г.
Установка и запуск jDeveloper 11g на Ubuntu 10.04
1. Скачиваем JDeveloper последней версии (на момент написания это Oracle JDeveloper 11g (11.1.1.3.0) - April 2010). Отсюда. Скачиваем *.bin файл.
2. Дальше жмем alt+F2 и пишем путь к скачанному файлу.
3. Устанавливаем, все как обычно.
4. В приложениях (applications) он не отобразится, поэтому создаем на панели или где угодно кнопку, называем ее например jDev и указываем команду /[install dir]/Oracle/Middleware/jdeveloper/jdev/bin/jdev
5. Запускаем и работаем.
п.с. Если нужно запустить это же приложение под виндой, то там в папке Oracle/Middleware/jdeveloper/ есть jdeveloper.exe. Вот его и запускаем.
2. Дальше жмем alt+F2 и пишем путь к скачанному файлу.
3. Устанавливаем, все как обычно.
4. В приложениях (applications) он не отобразится, поэтому создаем на панели или где угодно кнопку, называем ее например jDev и указываем команду /[install dir]/Oracle/Middleware/jdeveloper/jdev/bin/jdev
5. Запускаем и работаем.
п.с. Если нужно запустить это же приложение под виндой, то там в папке Oracle/Middleware/jdeveloper/ есть jdeveloper.exe. Вот его и запускаем.
воскресенье, 11 июля 2010 г.
JPA, как удалить запись и связанные с ней записи.
У меня есть 2-е таблицы, в одной из них создаются элементы связанные с одним из элементов в другой таблице.
Простым методом удаления типа:
public void deleteInvisibleNotice(Notice noticeName) {
EntityManager iem = EntityManagerProvider.getEntityManager();
try {
iem.getTransaction().begin();
Notice localNotice = iem.find(Notice.class, noticeName.getId());
iem.remove(localNotice);
iem.getTransaction().commit();
} finally {
iem.close();
}
}
Удалить связанные с этой записью записи в другой таблице, естественно не получится, а кроме того, ее просто нельзя удалить, ибо нарушится целостность БД или что-то в этом духе, в общем не даст БД ее удалить, выдав ошибку (раньше наверное гибернейт заругается, в общем не суть.)
Порывшись в интернете нашел способ, который и применил, скорее всего я его немного изменю, но суть от этого не изменится - он работает.
public void deleteNoticeAndHisParameters(Integer noticeId) {
EntityManager iem = EntityManagerProvider.getEntityManager();
try {
iem.getTransaction().begin();
Notice localNotice = iem.find(Notice.class, noticeId);
Query q = iem.createQuery("select Object(o) from ParameterValue as o where o.notice = :notice");
q.setParameter("notice", localNotice);
List parameterValuesList = q.getResultList();
for (ParameterValue parameterValue : parameterValuesList) {
parameterValue.getNotice().getParameterValues().remove(parameterValue);
iem.remove(parameterValue);
}
localNotice = iem.merge(localNotice);
iem.remove(localNotice);
iem.getTransaction().commit();
} finally {
iem.close();
}
}
Простым методом удаления типа:
public void deleteInvisibleNotice(Notice noticeName) {
EntityManager iem = EntityManagerProvider.getEntityManager();
try {
iem.getTransaction().begin();
Notice localNotice = iem.find(Notice.class, noticeName.getId());
iem.remove(localNotice);
iem.getTransaction().commit();
} finally {
iem.close();
}
}
Удалить связанные с этой записью записи в другой таблице, естественно не получится, а кроме того, ее просто нельзя удалить, ибо нарушится целостность БД или что-то в этом духе, в общем не даст БД ее удалить, выдав ошибку (раньше наверное гибернейт заругается, в общем не суть.)
Порывшись в интернете нашел способ, который и применил, скорее всего я его немного изменю, но суть от этого не изменится - он работает.
public void deleteNoticeAndHisParameters(Integer noticeId) {
EntityManager iem = EntityManagerProvider.getEntityManager();
try {
iem.getTransaction().begin();
Notice localNotice = iem.find(Notice.class, noticeId);
Query q = iem.createQuery("select Object(o) from ParameterValue as o where o.notice = :notice");
q.setParameter("notice", localNotice);
List
for (ParameterValue parameterValue : parameterValuesList) {
parameterValue.getNotice().getParameterValues().remove(parameterValue);
iem.remove(parameterValue);
}
localNotice = iem.merge(localNotice);
iem.remove(localNotice);
iem.getTransaction().commit();
} finally {
iem.close();
}
}
понедельник, 14 июня 2010 г.
Как раздать интернет в сеть Unbuntu 10.04
Инструкцию пишу для себя, чтобы в дальнейшем не тратить время, на поиски инструкций в интернете, если кому еще пригодится - хорошо.
У меня дома 2 компутера, один, на который я установил Ubuntu 10.04 другой с Win 7, на второй комп без заморочек надо дать интернет, они соединены между собой простеньтким D-Link свичем на 5 дырдочек. Ну и плюс в этот D-Link воткнут кабель от провайдера.
Начал я было ставить различные прокси-сервера и так далее, провозился кучу времени. Затем мне подсказали очень простой способ как это все сделать без всяких прокси.
И так - первое, ставим DNS-сервер Bind9, на сколько я помню, никаких дополнительных настроек после его установки я не делал (если все же делал, то придется мне сидеть вспоминать, если понадобиться все это воспроизвести вновь).
sudo apt-get install bind9
Идем дальше:
создаем файлик, /etc/init.d/masq, содержимое файла будет таким:
ifconfig eth0:0 13.0.0.1
iptables -t nat -A POSTROUTING -s 13.0.0.1/24 -j MASQUERADE
iptables -A FORWARD -s 13.0.0.1/24
echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/bind9 restart
И затем выполняем команду:
Перезагружаемся:
Открываем терминал и и пишем: ifconfig, в списке устройств вы должны увидеть это:
eth0:0 Link encap:Ethernet HWaddr 00:24:1d:38:bc:39
inet addr:13.0.0.1 Bcast:13.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:27 Base address:0x8000
Далее так же в терминале, выполним команду:
sudo netstat -lpn |grep :53
Если в списке вы увидите, вот это:
tcp 0 0 13.0.0.1:53 0.0.0.0:* LISTEN -
значит все сделано правильно.
Идем ко второй машинке и настраиваем сеть, выставляем ip например 13.0.0.2, маска 255.255.255.0 основной шлюз 13.0.0.1
Вот и все, никаких прокси и прочего. Правда есть минус, кто угодно в сети может юзать интернет, но меня это не напрягает, тем более что 13-й айпишник не так популярен как 192.168.0.х :)
У меня дома 2 компутера, один, на который я установил Ubuntu 10.04 другой с Win 7, на второй комп без заморочек надо дать интернет, они соединены между собой простеньтким D-Link свичем на 5 дырдочек. Ну и плюс в этот D-Link воткнут кабель от провайдера.
Начал я было ставить различные прокси-сервера и так далее, провозился кучу времени. Затем мне подсказали очень простой способ как это все сделать без всяких прокси.
И так - первое, ставим DNS-сервер Bind9, на сколько я помню, никаких дополнительных настроек после его установки я не делал (если все же делал, то придется мне сидеть вспоминать, если понадобиться все это воспроизвести вновь).
sudo apt-get install bind9
Идем дальше:
создаем файлик, /etc/init.d/masq, содержимое файла будет таким:
ifconfig eth0:0 13.0.0.1
iptables -t nat -A POSTROUTING -s 13.0.0.1/24 -j MASQUERADE
iptables -A FORWARD -s 13.0.0.1/24
echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/bind9 restart
И затем выполняем команду:
sudo ln -s /etc/init.d/masq /etc/rc2.d/S21masq
Перезагружаемся:
Открываем терминал и и пишем: ifconfig, в списке устройств вы должны увидеть это:
eth0:0 Link encap:Ethernet HWaddr 00:24:1d:38:bc:39
inet addr:13.0.0.1 Bcast:13.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:27 Base address:0x8000
Далее так же в терминале, выполним команду:
sudo netstat -lpn |grep :53
Если в списке вы увидите, вот это:
tcp 0 0 13.0.0.1:53 0.0.0.0:* LISTEN -
значит все сделано правильно.
Идем ко второй машинке и настраиваем сеть, выставляем ip например 13.0.0.2, маска 255.255.255.0 основной шлюз 13.0.0.1
Вот и все, никаких прокси и прочего. Правда есть минус, кто угодно в сети может юзать интернет, но меня это не напрягает, тем более что 13-й айпишник не так популярен как 192.168.0.х :)
понедельник, 24 мая 2010 г.
Hyperlink in Table (VW JSF)
Возникла потребность создать в таблице помимо самих данных - ссылки для перехода на другую страницу. Ссылки, естественно, должны быть отличны друг от друга, к примеру такими:
http://localhost/w-info/faces/SelectedPage.jsp?id=377250
http://localhost/w-info/faces/SelectedPage.jsp?id=377251
http://localhost/w-info/faces/SelectedPage.jsp?id=377252
Последние цифры в ссылке, не трудно догадаться это id элемента.
И так, тут все просто, создаем метод:
public String getUrl() {
String url = "faces/SelectedPage.jsp?id=" + getValue("#{currentRow.value['id']}").toString();
return url;
}
Ну и пара скриншотов на всякий случай:
Добавляем столбец в таблицу, щелкнув по ней ПКМ и выбрав Table Layout, жмем NEW и видим последний добавленный столбец. Меняем его тип на Hyperlink.
И пишем значение самой ссылки "Открыть" ну или "Подробнее" или "перейти" или "Mail To:" что угодно :)
Добавили столбец,получили следующее:
Теперь щелкнем по свойству элемента hyperlink 'url' и выберем во вкладке "Bind to an Object" наш недавно добавленный метод.
Жмем "Ок", запускаем проект. Вот и все.
http://localhost/w-info/faces/SelectedPage.jsp?id=377250
http://localhost/w-info/faces/SelectedPage.jsp?id=377251
http://localhost/w-info/faces/SelectedPage.jsp?id=377252
Последние цифры в ссылке, не трудно догадаться это id элемента.
И так, тут все просто, создаем метод:
public String getUrl() {
String url = "faces/SelectedPage.jsp?id=" + getValue("#{currentRow.value['id']}").toString();
return url;
}
Ну и пара скриншотов на всякий случай:
Добавляем столбец в таблицу, щелкнув по ней ПКМ и выбрав Table Layout, жмем NEW и видим последний добавленный столбец. Меняем его тип на Hyperlink.
И пишем значение самой ссылки "Открыть" ну или "Подробнее" или "перейти" или "Mail To:" что угодно :)
Добавили столбец,получили следующее:
Теперь щелкнем по свойству элемента hyperlink 'url' и выберем во вкладке "Bind to an Object" наш недавно добавленный метод.
Жмем "Ок", запускаем проект. Вот и все.
Подписаться на:
Сообщения (Atom)