2016-12-31 7 views
0

Может ли кто-нибудь дать мне пример простой формы, которая при заданном простом объекте вы можете нажать сохранить и знать, что у него есть все данные, необходимые для сохранения объекта (включая идентификатор ?)PlayFramework java и that play ~ bootstrap helper

Используя игру found here

(Это просто заполнитель, так что я могу отправить ответ - почему никто, как примеров, которые работают в их рамках Вздох)

ответ

0

Это было менее очевидно, что? Я хотел - я из школы, где вы «скрываете» идентификатор в форме, в каком-то скрытом поле или что-то вроде этого.

Возможно, в кодовой базе play-bootstrap есть отличный способ сделать это, но я не видел ее в документации - так вот, мой друг, это как взять какой-то объект, сделать форму для него, а затем может обновить это objext.

Я оставил код db вне, для краткости.

Прежде всего, вот мое действие - в моем классе контроллера, которое получает мою модель из базы данных. Обратите внимание, что используемая мной модель поддержки такая же, как и для базы данных, с частными полями и т. Д. (Знаете, это просто общий POJO).

public Result editLesson(int languageId){ 
    Form<Language> languageForm = formFactory.form(Language.class); 

    try { 
     //here da is just how i get things from the database. 
     Language language = da.getLanguage(languageId); 
     languageForm = languageForm.fill(language); 
    } catch (SQLException e){ //SAD! } 
    return ok(editLesson.render(languageForm)); 
} 

Уход. Так что просто получает форму и надувает ее на какую-то страницу, чтобы ее увидеть. Обратите внимание, что formFactory необходимо вводить волшебным образом в ваш контроллер. Затем, как выглядит страница?

Ну, это обычный шаблон, только:

меня это как моя первая линия: @import b3.vertical.fieldConstructor

и где я хочу, чтобы показать форму я

@b3.form(routes.HomeController.saveLesson) { 
    @b3.hidden("id", languageForm("id").value, 'attr -> false) 
    @b3.text(languageForm("name"), '_label -> "Title", 'placeholder -> "The Title") 
    @b3.text(languageForm("description"), '_label -> "Description", 'placeholder -> "The Description") 
    @b3.submit('class -> "btn btn-default"){ <span class="glyphicon glyphicon-ok"></span> Save } 
} 

Ok, поэтому здесь мы имеем форму - это говорит о форме, куда идти (мы рассмотрим маршруты за 5 секунд) и разместим редактируемые поля. Я установил здесь поле id. Мне не было интуитивно понятно, как получить к нему доступ - но вот вы где.

Мои маршруты файл имеет следующее:

GET  /edit-lesson/:languageId controllers.HomeController.editLesson(languageId: Integer) 
POST /save-lesson/    controllers.HomeController.saveLesson() 

Первая строка, как я начала редактирования страниц. Во второй строке я хочу пойти, чтобы сохранить эти отредактированные уроки. Я использую routes.HomeController.saveLesson для обратного отсчета для сохранения. Если ваш контроллер называется Bob (немое имя), вместо этого вы должны использовать routes.Bob.saveLesson для ссылки на метод saveLesson.

Наконец, мой saveLesson код выглядит следующим образом (в Бобе ~ ERM, HomeController)

public Result saveLesson(){ 
    Form<Language> languageForm = formFactory.form(Language.class).bindFromRequest(); 

    if (languageForm.hasErrors()){ 
     return badRequest(editLesson.render(languageForm)); 
    } else { 
     Language language = languageForm.get(); 
     try { 
      da.saveLanguage(language); 
      return ok(share.render()); 
     } catch (SQLException e){ 
      //TODO: log this, but really we don't have much to do, do we? 
      return ok(e.getMessage()); 
     } 
    } 
} 

Примечания связывания данных перепутались в Play - если форма содержит ошибки, то вызов .get() потерпит неудачу, поэтому в случае, если в вашем контроллере по какой-то причине вы хотите получить некоторые данные формы, вам нужно проверить, имеет ли форма ошибку - если это не так, сделайте что угодно. Если это делает, вам нужно использовать .field(String).value() на объекте формы, вы не можете преобразовать объект формы в привязку (через get()). ~ Это немного отличается на странице scala, но не на странице java!

 Смежные вопросы

  • Нет связанных вопросов^_^