好的,所以我在从表单中获取数据以绑定到我的模型类时遇到了一些问题。
我有一个课程问题基本上是这样的:
@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。)专门为Forms创建模板类,不包括外键,ID和不是为用户设计的格式的信息。 (即如果Question
有Topic
的外键,则QuestionForm
类会有String topic
字段。
2。)在Question
模型中创建类似getFormForQuestion(Question)
和getQuestionForForm(Form<Question>)
的方法,然后使用这些方法执行CRUD函数。
基本上用户和控制器使用Forms进行交互,然后模型知道如何获取这些表单并将它们转换为数据库中的条目。
这是一种合理的方式吗?或者有更好的方法吗?
更新:
使用@GeneratedValue
注释而不是@Required
注释时似乎已修复,但我仍然对我提出的表单设计模式感到好奇。
此外,只需删除@Required
即可解决问题。仍在寻找对上述设计模式的评论!
答案 0 :(得分:1)
id字段不需要任何验证,ORM会关心它。当然你不应该把id放在表格中(它根本不应该被编辑 - 它是常见的AUTO_INCREMENT)并且最好使它变长,只是:
@Id
public Long id;