ОК, у меня возникли проблемы с получением данных из формы для привязки к классу модели, который у меня есть.
У меня есть вопрос класса, который в основном выглядит так:
@Entity
public class Question extends Model {
@Id @Required public int id;
public String title;
public String body;
...methods...
}
Итак, я хочу использовать это как шаблон для формы, чтобы пользователь мог создать вопрос, поэтому я создаю статический экземпляр (как они делают в примерах)
final static Form<Question> question_form = form(Question.class);
Пока все хорошо, все компилируется. Проблема возникает, когда я действительно отправляю форму:
Form<Question> filled_form = new Form<Question>(Question.class).bindFromRequest();
Здесь я получаю сообщение об ошибке:
[UnexpectedTypeException: No validator could be found for type: java.lang.Integer]
Я думаю о том, как поступить, чтобы использовать шаблон проектирования, который выглядит следующим образом:
1.) Создавайте классы шаблонов специально для форм, которые не включают в себя такие вещи, как внешние ключи, идентификаторы и информацию, не в формате, предназначенном для пользователя. (то есть, если Question
имеет внешний ключ для Topic
, класс QuestionForm
будет иметь поле String topic
.
2.) Создайте методы в модели Question
, которые будут выглядеть примерно так: getFormForQuestion(Question)
и getQuestionForForm(Form<Question>)
, а затем используйте эти методы для выполнения функций CRUD.
Таким образом, в основном пользователь и контроллер взаимодействуют с помощью форм, и затем Модель знает, как принимать эти формы и превращать их в записи в базе данных.
Это разумный способ продолжить? Или есть лучший способ сделать это?
UPDATE:
Кажется исправленным при использовании аннотации @GeneratedValue
, а не аннотации @Required
, но мне все еще интересно, какой у меня предложенный шаблон формы дизайна.
Также просто удаление @Required
, кажется, чтобы решить проблемы. Все еще ищите комментарии к упомянутому шаблону дизайна!