Родительские / дочерние формы при использовании Playframework с Java
У меня есть объект «Вопрос», который имеет «Ответ», который имеет список «Альтернатив», как показано ниже:
public class Question extends BaseEntity {
private String text;
private String sourceCode;
private String complement;
private Answer answer;
}
public class Answer extends BaseEntity{
private List<Alternative> alternatives;
}
Я хочу сделать так, чтобы пользователь заполнял список вопросов. Я прочитал так много материалов и ТАК вопросов, но я не могу понять, как именно делать то, что я хочу с формами. Я знаю, что я могу сделать это другим способом, используя DynamicForms, это не то, что я хочу. Моя идея заключается в том, что это можно сделать следующим образом:
@(message: String, form: play.data.Form[Question])
@main("cadastrar questão") {
<script src="@routes.Assets.at("javascripts/index.js")"></script>
<div class="page-header">
<h1>@message</h1>
</div>
<body>
<style>
.top-buffer { margin-top:12px ; }
</style>
<div class="container.fluid form-group">
@helper.form(routes.Application.submit()) {
<div class="row top-buffer">
<label for="text">Enunciado:</label>
<textarea id="text" name="text" class="form-control col-md-6" placeholder="Enunciado da questão" rows="5" value="@form("text").value()"></textarea>
</div>
...
<div class="row top-buffer">
<label for="complement">Corretas:</label>
<input type="text" name="correct" class="form-control col-md-6" value="@form("complement.answer.alternatives[0]").value()">
</div>
<div class="row top-buffer">
<div class="row top-buffer">
<input type="submit" class="btn btn-primary col-md-1" value="submit">
</div>
</div>
}
</div>
</body>
}
Но когда я пытаюсь использовать объект ответа и его "альтернативы" большойNullPointerexception
взрывается на моем лице:
final Form<Question> questionForm = f.bindFromRequest();
final Question question = questionForm.get();
System.out.println(question);
System.out.println(question.getText());
System.out.println(question.getSourceCode());
System.out.println(question.getComplement());
//Nullpointer here:
final List<Alternative> alternatives =
question.getAnswer().getAlternatives();
alternatives.forEach(p -> System.out.println(p));
Я пропускаю больше документации и примеров об этом и других связанных с этим вещах. Даже официальный сайт не дает обширных примеров. Особенно при работе с Java. Это дает представление о том, что фреймворк устарел или перегружен другими технологиями?
Я использую версию 2.4.6 Play.