Проверка формы в Play 2.0 - PullRequest
0 голосов
/ 29 марта 2012

ОК, у меня возникли проблемы с получением данных из формы для привязки к классу модели, который у меня есть.

У меня есть вопрос класса, который в основном выглядит так:

@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, кажется, чтобы решить проблемы. Все еще ищите комментарии к упомянутому шаблону дизайна!

1 Ответ

1 голос
/ 29 марта 2012
Поле

id не нуждается в проверке, ORM позаботится об этом. Конечно, вы не должны помещать идентификатор в форму (его вообще не нужно редактировать - это обычный AUTO_INCREMENT), а лучше сделать его длинным, просто:

@Id
public Long id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...