GWT Разместить объекты

Я новичок в GWT, так что это может быть глупый вопрос, но я нигде не нашел на него хорошего ответа.

Итак, как мне создавать объекты Place в GWT? Должен ли я создавать их как финальные в моей ClientFactory и повторно использовать их везде? объекты Place, генерируемые Eclipse, едят строковый токен в качестве параметра, каким он должен быть?

Мое понимание заключается в следующем: я должен создать окончательные объекты Place в моем ValueChangeHandler для тех страниц, которые являются статическими, и повторно использовать их везде. Те места, которые относительно динамичны, должны быть созданы как

new MyCoolPlace("MyCoolPlace" + someRandomNumber)

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

В настоящее время у меня проблема с выяснением того, как работает этот механизм: у меня есть форма. Например, для добавления овощей в БД 1. Пользователь заполняет ее 2. Отправляет ее 3. Попадает на страницу благодарности 4. Щелкает по ссылке в меню, чтобы добавить новый овощ 5. Доходит до формы, но она уже предварительно заполнен ранее введенными пользователем значениями.

Мне нужна чистая форма на шаге 5. Но если пользователь нажмет кнопку «Назад» в браузере на шаге 3, я хочу, чтобы она была предварительно заполнена.


person Yervand Aghababyan    schedule 24.06.2011    source источник


Ответы (1)


Вопрос об финале:

Думаю, нет. Это легкие объекты, и места могут иметь в них значения. Они не являются ограниченным набором значений мест (по крайней мере, если вы их параметризуете).

Вопрос о значениях формы:

Обычное поведение заключается в том, что когда вы возвращаетесь, скажем, к «vegForm», вы получаете чистый вид (это потому, что ваш URL-токен — это простой vegForm). Что происходит, я думаю, вы повторно используете свое представление без инициализации. Ваш докладчик (или что-то еще, имеющее логику пользовательского интерфейса) должен получить представление и вызвать «reset()», «init()» или что угодно.

Если вы хотите сохранить свои значения, когда вернетесь, вы должны сохранить их в своем объекте места. Это: значения полей. И ваш PlaceTokenizer (объект, который преобразует URL-адрес и объект Place) должен позаботиться о них. Например: vegForm/potato,green,... (не помню стандартное обозначение).

Проблема заключается в том, как сохранить в URL-адресе значения, введенные до нажатия кнопки «Сохранить»?

Что бы я сделал, это «сохранить» это состояние в URL-адресе перед сохранением:

History.newItem("vegForm/potato,green,...", false);

И это попадет в стек истории. Когда я говорю false, это означает, что механизм истории GWT не должен реагировать на этот URL, избегая повторной загрузки представления. Когда ваш пользователь нажимает назад, он должен вернуться к форме (со значениями). Если ваш пользователь щелкнет еще раз, она должна вернуться к форме (очистить).

Например:

User clicks add veg -> #vegForm
User fills data and pless save
   -> #vegForm/value1,value2 (saved in History with false argument)
   -> #okPage

User clicks back
   -> #vegForm/value1,value2 (form with saved data)
User clicks back
   -> #vegForm (form without)

Инициализация

Учтите, что вы всегда должны инициализировать представление.

  • Если у вас нет параметров, чтобы очистить его (это может быть повторно используемое представление)
  • Если у вас есть параметры, чтобы заполнить ими форму
person helios    schedule 24.06.2011
comment
О, кстати, будьте осторожны со значениями, которые вы вставляете в токен, я не знаю, кодирует ли его GWT или нет (если это не так, вам следует кодировать его вручную). А также следует позаботиться о длине. Не делайте это слишком длинным (я думаю, что ограничение составляет 1024 символа, но я не уверен). - person helios; 27.06.2011