在Scalatra中有处理表单提交的好方法吗

在Scalatra中有处理表单提交的好方法吗,scala,scalatra,Scala,Scalatra,现在我只是使用params函数来获取已发布到URL的数据 在Scalatra中是否有其他方法可以像在游戏框架中一样处理表单?Scalatra是否支持既可用于创建表单又可自动填充表单的对象?Scalatra不提供如此复杂的功能。它并不复杂,因为它很难实现,它的复杂性来源于合作各方的数量 首先,您需要一个模型来表示域中的对象,默认情况下Scalatra不提供任何模型库。然后,运行库使用该模型将HTTP请求中设置的任意字符串转换为某个模型的实例。比如说 如果请求是一个GET,并指定了一个类似user

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


在Scalatra中是否有其他方法可以像在游戏框架中一样处理表单?Scalatra是否支持既可用于创建表单又可自动填充表单的对象?

Scalatra不提供如此复杂的功能。它并不复杂,因为它很难实现,它的复杂性来源于合作各方的数量

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

  • 如果请求是一个
    GET
    ,并指定了一个类似
    user.id
    的参数,则绑定软件会将该字符串转换为
    user
    类型的对象,该对象通过其id在数据库中找到
  • 如果请求是一个
    POST
    ,指定三个参数,如
    user.name
    user.password
    user.birth
    ,并且没有指定
    user.id
    ,则运行时将构建一个类型为
    user
    的对象,该对象可以用一个简单的
    user.save()放入数据库
    -如果通过了
    用户
    类中指定的验证(如果有),则提供
  • 如果请求是一个
    PUT
    (或Scalatra文档中解释的等效项),并且包含
    user.id
    user.birth
    ,则首先通过id检索
    用户
    ,然后更新其生日,最后将其提供给控制器,准备调用
    user.save()
如您所见,这需要在运行时提供模型库、绑定库和粘合支持

要生成HTML表单,您需要一个助手库,它可以检查模型并为您输出HTML位。例如,您的库检查
用户
类,检测它有三个公共字段
名称
密码
生日
,并且根据使用
作为输入名称的惯例,输出


注意

  • URL和方法只能在学习某些上下文(例如routes)后填写
  • 绑定库必须使用相同的命名约定来反序列化此表单提交的
    用户
    对象
  • 等等
一旦你把所有的部分放在一起,你就构成了一个MVC框架,那么使用像Scalatra这样的小型RESTful软件有什么意义呢