Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Vaadin Login Form

400  
bars_12 коренной житель23.12.12 00:22
23.12.12 00:22 
Всем привет!
Вопрос - пытаюсь юзать в этой штуке (версия фремворка 6.8 эклипс индиго томкат 5.5 ОС XP) логин форму перед главной.
ПРога уходит в бесконеынй цикл.
Кто нибудь вообще пользовался? В чем ошибка может быть.
Пытался вязаться к свойству user объекта Application
#1 
  Roanuk прохожий04.01.13 15:29
NEW 04.01.13 15:29 
в ответ bars_12 23.12.12 00:22
http://demo.vaadin.com/sampler
#2 
  Roanuk прохожий10.01.13 14:47
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");
}
}
}
#3 
bars_12 коренной житель13.01.13 20:42
NEW 13.01.13 20:42 
в ответ Roanuk 10.01.13 14:47
Спасибо. Очень подробно и грамотно - многое стало понятно в концепции фреймворка.
Такой вопрос вдогонку - в Vaadin есть проблема использования процеуры init. Когда главное окошко грузится в ней - у меня оно идет после формы логин - то сервлет не успевает поучить размеры клиентского поля и вывоит окошко с нулевыми размерами.
У меня такое проявляется после погрузки тем (settheme)
На форуме Vaadin рекомендуют окна (причем с мелкой логин формой на вертикальном слое даже с картинкой вполне появляется) грузить не в инит а в onrequeststart (в моем прижении имплементирован httprequestlistener) причем заранее прочитав размеры клиентского браузера.
Может быть есть способ прямо в инит как то устранить эту ошибку - ибо в onrequeststart лоигн форма не пашет - ошибка что в инит не загружено главное окно - почему то главное коно приложения требуется грузить именно в инит - а уменя как раз выбор если не щалогинены то setmainwindow(окно с лоигн формой) а если залогинены то setmainwindow(главное окно)
#4 
  Roanuk прохожий16.01.13 16:41
NEW 16.01.13 16:41 
в ответ bars_12 13.01.13 20:42, Последний раз изменено 16.01.13 16:49 (Roanuk)
Не меняйте 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);
}
}
#5 
bars_12 коренной житель20.01.13 19:19
NEW 20.01.13 19:19 
в ответ Roanuk 16.01.13 16:41
В ответ на:
Не меняйте Window никогда. Исполъзуйте длы логин и для main только ComponentContainer. SetContent самое то:
(не забудьте посмотреть в ЛогинЛистенер. Он в предыдышем посте написан.)
Уже огаался сам но все равно спасибо
В целом все заработало. Хотя от станартной логин-форм отказался - своя оказалась продуктивнее.
Есть еще пара вопросов.
1. Глобальный - насколько vaadin 7 лучше чем 6.8
ИЛи с ним пока рановато работать - все таки релиз осени 2012?
2. Более детальный - модальные формы - ну к примеры вызываемые по кнопкам из главного меню или откуда либо еще лучше рисовать в своих окнах и открывать счерез openwindow() или через какой либо другой контейнер? И можно ли отловить изменение юзером размера браузера и перестоить само окошко под новые размеры клиентского окна? Если vaadin так умеет через какой объект работать - browser или что то другое? И такой момет - комбобокс с невидимыми колонками бывает или у vaadin нет такой возможности? -обойтись без этого можно но криво и с избыточным кодом
#6 
  Roanuk гость23.01.13 14:47
NEW 23.01.13 14:47 
в ответ bars_12 20.01.13 19:19
1. Более упорыдочен. Но сразу кидаться не нужно.
2. ОпенВиндов это самое то. С лаяутом нужно очень осторхно рабптать здесь
#7