有没有一种很好的方法来处理Scalatra中的表单提交

时间:2012-09-22 05:12:28

标签: scala scalatra

现在我只是使用params函数来获取已发布到网址的数据。

在Play框架中是否还有其他方式可以处理Scalatra中的表单? Scalatra是否支持可以用于创建表单并自动填充表单的对象?

1 个答案:

答案 0 :(得分:4)

Scalatra没有提供如此复杂的功能。它不是复杂的,因为它很难实现,它的复杂性来自于一起玩耍的派对数量。

首先,您需要Model来表示域中的对象,而Scalatra默认情况下不提供任何模型库。然后,运行时使用此模型将HTTP请求中设置的任意字符串转换为某个模型的实例。例如

  • 如果请求是GET并指定类似user.id的参数,则绑定软件会将此字符串转换为类型User的对象,该对象在数据库中通过其ID找到。 / LI>
  • 如果请求是POST,则指定三个参数,例如user.nameuser.passworduser.birthday指定{{1运行时构建一个类型为user.id的对象,该对象已准备好放入带有简单User的DB中 - 如果通过User.save()中指定的验证(如果有),则提供该对象类
  • 如果请求是User(或Scalatra文档中说明的等效文件)且包含PUTuser.id,则首先按ID检索user.birthday,然后它的生日会更新,最后可供您的控制器使用,随时可以拨打User

如您所见,这需要运行时中的模型库,绑定库和粘合支持。

要生成HTML表单,您需要一个可以检查模型并为您输出HTML位的帮助程序库。例如,您的图书馆检查User.save()类,检测到它有三个公共字段Usernamepassword,并且根据使用{{1作为输入'名称,输出

birthday

请注意

  • 只能在学习一些上下文(例如路线)后填写URL和方法
  • 绑定库必须使用相同的命名约定来反序列化此表单提交的<model>.<property>对象

一旦你把所有部分放在一起,你就构成了一个MVC框架,那么使用像Scalatra这样的小型RESTful软件有什么意义呢?