Вход на сайт
Vaadin Login Form
400
23.12.12 00:22
Всем привет!
Вопрос - пытаюсь юзать в этой штуке (версия фремворка 6.8 эклипс индиго томкат 5.5 ОС XP) логин форму перед главной.
ПРога уходит в бесконеынй цикл.
Кто нибудь вообще пользовался? В чем ошибка может быть.
Пытался вязаться к свойству user объекта Application
Вопрос - пытаюсь юзать в этой штуке (версия фремворка 6.8 эклипс индиго томкат 5.5 ОС XP) логин форму перед главной.
ПРога уходит в бесконеынй цикл.
Кто нибудь вообще пользовался? В чем ошибка может быть.
Пытался вязаться к свойству user объекта Application
NEW 10.01.13 14:47
в ответ Roanuk 04.01.13 15:29
В догонку:
в Листенере надо после успешного логина:
class MyLoginListener implements LoginForm.LoginListener {
public MyLoginListener (LoginForm loginForm, Application app)
{
this.loginForm = loginForm;
this.app = app;
}
public void onLogin(LoginEvent event) {
if (loginOk)
{
this.app.setContent(new VerticalLayout("Login Ok.")
}
else{
this.loginForm.getWindow().showNotification("Login failure");
}
}
}
в Листенере надо после успешного логина:
class MyLoginListener implements LoginForm.LoginListener {
public MyLoginListener (LoginForm loginForm, Application app)
{
this.loginForm = loginForm;
this.app = app;
}
public void onLogin(LoginEvent event) {
if (loginOk)
{
this.app.setContent(new VerticalLayout("Login Ok.")
}
else{
this.loginForm.getWindow().showNotification("Login failure");
}
}
}
NEW 13.01.13 20:42
в ответ Roanuk 10.01.13 14:47
Спасибо. Очень подробно и грамотно - многое стало понятно в концепции фреймворка.
Такой вопрос вдогонку - в Vaadin есть проблема использования процеуры init. Когда главное окошко грузится в ней - у меня оно идет после формы логин - то сервлет не успевает поучить размеры клиентского поля и вывоит окошко с нулевыми размерами.
У меня такое проявляется после погрузки тем (settheme)
На форуме Vaadin рекомендуют окна (причем с мелкой логин формой на вертикальном слое даже с картинкой вполне появляется) грузить не в инит а в onrequeststart (в моем прижении имплементирован httprequestlistener) причем заранее прочитав размеры клиентского браузера.
Может быть есть способ прямо в инит как то устранить эту ошибку - ибо в onrequeststart лоигн форма не пашет - ошибка что в инит не загружено главное окно - почему то главное коно приложения требуется грузить именно в инит - а уменя как раз выбор если не щалогинены то setmainwindow(окно с лоигн формой) а если залогинены то setmainwindow(главное окно)
Такой вопрос вдогонку - в Vaadin есть проблема использования процеуры init. Когда главное окошко грузится в ней - у меня оно идет после формы логин - то сервлет не успевает поучить размеры клиентского поля и вывоит окошко с нулевыми размерами.
У меня такое проявляется после погрузки тем (settheme)
На форуме Vaadin рекомендуют окна (причем с мелкой логин формой на вертикальном слое даже с картинкой вполне появляется) грузить не в инит а в onrequeststart (в моем прижении имплементирован httprequestlistener) причем заранее прочитав размеры клиентского браузера.
Может быть есть способ прямо в инит как то устранить эту ошибку - ибо в onrequeststart лоигн форма не пашет - ошибка что в инит не загружено главное окно - почему то главное коно приложения требуется грузить именно в инит - а уменя как раз выбор если не щалогинены то setmainwindow(окно с лоигн формой) а если залогинены то setmainwindow(главное окно)
NEW 16.01.13 16:41
Не меняйте Window никогда. Исполъзуйте длы логин и для main только ComponentContainer. SetContent самое то:
(не забудьте посмотреть в ЛогинЛистенер. Он в предыдышем посте написан.)
public class MyVaadinApplication extends Application {
...
@Override
public void init() {
logger.info(">init");
Window mainWindow = new Window("My application");
this.setMainWindow(mainWindow);
mainWindow.setContent(new ScreenLogin(this));
logger.info("<init");
}
public class ScreenLogin extends VerticalLayout{
...
public ScreenLogin (){
...
LoginForm loginForm = new LoginForm();
...
this.addCOmponent(loginForm);
}
}
(не забудьте посмотреть в ЛогинЛистенер. Он в предыдышем посте написан.)
public class MyVaadinApplication extends Application {
...
@Override
public void init() {
logger.info(">init");
Window mainWindow = new Window("My application");
this.setMainWindow(mainWindow);
mainWindow.setContent(new ScreenLogin(this));
logger.info("<init");
}
public class ScreenLogin extends VerticalLayout{
...
public ScreenLogin (){
...
LoginForm loginForm = new LoginForm();
...
this.addCOmponent(loginForm);
}
}
NEW 20.01.13 19:19
В целом все заработало. Хотя от станартной логин-форм отказался - своя оказалась продуктивнее.
Есть еще пара вопросов.
1. Глобальный - насколько vaadin 7 лучше чем 6.8
ИЛи с ним пока рановато работать - все таки релиз осени 2012?
2. Более детальный - модальные формы - ну к примеры вызываемые по кнопкам из главного меню или откуда либо еще лучше рисовать в своих окнах и открывать счерез openwindow() или через какой либо другой контейнер? И можно ли отловить изменение юзером размера браузера и перестоить само окошко под новые размеры клиентского окна? Если vaadin так умеет через какой объект работать - browser или что то другое? И такой момет - комбобокс с невидимыми колонками бывает или у vaadin нет такой возможности? -обойтись без этого можно но криво и с избыточным кодом
в ответ Roanuk 16.01.13 16:41
В ответ на:
Не меняйте Window никогда. Исполъзуйте длы логин и для main только ComponentContainer. SetContent самое то:
(не забудьте посмотреть в ЛогинЛистенер. Он в предыдышем посте написан.)
Уже огаался сам но все равно спасибоНе меняйте Window никогда. Исполъзуйте длы логин и для main только ComponentContainer. SetContent самое то:
(не забудьте посмотреть в ЛогинЛистенер. Он в предыдышем посте написан.)
В целом все заработало. Хотя от станартной логин-форм отказался - своя оказалась продуктивнее.
Есть еще пара вопросов.
1. Глобальный - насколько vaadin 7 лучше чем 6.8
ИЛи с ним пока рановато работать - все таки релиз осени 2012?
2. Более детальный - модальные формы - ну к примеры вызываемые по кнопкам из главного меню или откуда либо еще лучше рисовать в своих окнах и открывать счерез openwindow() или через какой либо другой контейнер? И можно ли отловить изменение юзером размера браузера и перестоить само окошко под новые размеры клиентского окна? Если vaadin так умеет через какой объект работать - browser или что то другое? И такой момет - комбобокс с невидимыми колонками бывает или у vaadin нет такой возможности? -обойтись без этого можно но криво и с избыточным кодом