Выпадающий список Play 2 Framework дает исключение нулевой точки

Я использую платформу play 2 с java и ebean для управления данными. У меня проблема с раскрывающимся списком. раскрывающийся список заполняется данными из базы данных mySQL. Он работал, но похоже, что я что-то случайно изменил, и теперь он выдает исключение с нулевым указателем, когда я пытаюсь отобразить страницу. Я пытаюсь решить проблему, но, похоже, не могу понять, в чем проблема. Ниже приведены фрагменты кодов.

это код, который заполняет раскрывающийся список:

public static Result gestureNames()
  {
  List <GestureClassEntity> gcet = GestureClassEntity.find.orderBy("name asc").findList();
  return ok(views.html.train.render(gcet)); 
}

это конфигурация маршрута для метода:

GET    /name                        controllers.Application.gestureNames()

это файл маршрута обновления:

# Home page
GET     /                           controllers.Application.index()
GET     /socket                     controllers.Application.webSocket()
GET     /cobject                    controllers.Application.classifyObject()
GET    /classify                    controllers.Application.classify()
GET    /name                        controllers.Application.gestureNames()
GET    /train                       controllers.Application.train()
GET    /tclassifier                 controllers.Application.trainClassifier()

это методы поездов и жестов

public static Result train()
  {   
      return ok(train.render(null));
  }

  public static Result gestureNames()
  {
  List <GestureClassEntity> gcet = GestureClassEntity.find.orderBy("name asc").findList();
  return ok(views.html.train.render(gcet)); 
}

это определение параметра в файле scala.html

@( gestureList: List[GestureClassEntity])

это код для выпадающего списка:

<select class = "selectone">
  @for(gesture <- gestureList){
      <option value = @gesture.id>
        @gesture.getName()
      </option>
  } 
  </select>

Я получаю исключение нулевой точки при запуске файла scala.html.

и это трассировка стека:

[error] application -

! @6bjof8n9g - Internal server error, for request [GET /train] ->

play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[NullPo
interException: null]]
        at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [
play_2.9.1.jar:2.0.2]
        at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [
play_2.9.1.jar:2.0.2]
        at akka.actor.Actor$class.apply(Actor.scala:318) [akka-actor.jar:2.0.2]
        at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1.jar:2.0.
2]
        at akka.actor.ActorCell.invoke(ActorCell.scala:626) [akka-actor.jar:2.0.
2]
        at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) [akka-actor.j
ar:2.0.2]
Caused by: java.lang.NullPointerException: null
        at scala.collection.JavaConversions$JListWrapper.iterator(JavaConversion
s.scala:618) ~[scala-library.jar:0.11.3]
        at scala.collection.IterableLike$class.foreach(IterableLike.scala:73) ~[
scala-library.jar:0.11.3]
        at scala.collection.JavaConversions$JListWrapper.foreach(JavaConversions
.scala:615) ~[scala-library.jar:0.11.3]
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
 ~[scala-library.jar:0.11.3]
        at scala.collection.JavaConversions$JListWrapper.map(JavaConversions.sca
la:615) ~[scala-library.jar:0.11.3]
        at views.html.train$.apply(train.template.scala:50) ~[classes/:na]

может ли кто-нибудь помочь мне с этой проблемой, потому что мне нужно отправить проект как задание, а я опаздываю.

Спасибо вам всем.


person faisal abdulai    schedule 12.09.2012    source источник
comment
Похоже, в вашем списке есть нулевой GestureClassEntity.   -  person ndeverge    schedule 13.09.2012
comment
Похоже, что это так, но когда я использую system.out.println, я могу выполнять итерацию и распечатывать объекты. Возможно, что-то не хватает в файле маршрута или при определении параметра в шаблоне scala.html.file.   -  person faisal abdulai    schedule 13.09.2012
comment
Или кажется, что это список, который в вашем шаблоне пуст.   -  person ndeverge    schedule 13.09.2012
comment
вполне вероятно, что список в шаблоне нулевой, как вы предложили, но как я могу проверить, является ли список нулевым или не нулевым. Потому что это означает, что проблема может быть в списке шаблонов или в методе GET файла маршрута. Я здесь запуталась.   -  person faisal abdulai    schedule 13.09.2012
comment
Вы пытались загрузить http://localhost:9000/name URL в свой браузер? Потому что ошибка появляется, когда вы нажимаете /train, но вы не показывали сопоставление URL /train в вашем файле маршрутов.   -  person ndeverge    schedule 13.09.2012
comment
Вау, я просто попробовал то, что вы предлагали, и страница была успешно обработана. Это меня взволновало. Большое спасибо. Думаю, теперь мне нужно выяснить, в чем проблема. Есть ли у тебя какие-нибудь предложения?   -  person faisal abdulai    schedule 13.09.2012
comment
Пожалуйста, покажите полный файл маршрутов (в частности, сопоставление URL-адресов / train)   -  person ndeverge    schedule 13.09.2012
comment
Я добавил полный список методов GET в файл маршрута. Обратите внимание, что маршрут имеет ту же структуру методов, что и я представил их здесь.   -  person faisal abdulai    schedule 13.09.2012
comment
И покажите метод controllers.Application.train()   -  person ndeverge    schedule 13.09.2012
comment
Я добавил методы train и gestureNames. Они чуть ниже методов GET   -  person faisal abdulai    schedule 13.09.2012


Ответы (1)


Проблема возникает из-за вызова /train Url, потому что он отображается на метод train(), который вызывает шаблон со списком GestureClassEntity, который является нулевым:

GET    /train                       controllers.Application.train()

затем он вызывает:

public static Result train()
  {   
      return ok(train.render(null)); // <- here is the problem
  }
person ndeverge    schedule 13.09.2012
comment
Итак, вы говорите, что метод поезда должен скорее возвращать объект gcet, а не нулевой объект. - person faisal abdulai; 13.09.2012
comment
Просто попробовал ваше предложение, и оно сработало. тысячу раз спасибо - person faisal abdulai; 13.09.2012