gpt4 book ai didi

scala - 在 Scalatra 中是否有处理表单提交的好方法

转载 作者:行者123 更新时间:2023-12-01 12:50:45 26 4
gpt4 key购买 nike

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

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

最佳答案

Scalatra 不提供如此复杂的功能。它并不复杂,因为它难以实现,它的复杂性源于一起玩的各方数量。

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

  • 如果请求是 GET并指定一个参数,如 user.id , 绑定(bind)软件将此字符串转换为 User 类型的对象, 通过其 ID 在数据库中找到。
  • 如果请求是 POST , 指定三个参数,如 user.name , user.passworduser.birthday并且指定user.id ,运行时构建类型为 User 的对象准备好用一个简单的 User.save() 放入数据库中- 如果通过了验证(如果有),则在 User 中指定类
  • 如果请求是 PUT (或 Scalatra 文档中解释的等效项)并包含 user.iduser.birthday , 首先是 User通过 ID 检索,然后更新其生日,最后提供给您的 Controller ,准备调用 User.save()

如您所见,这需要模型库、绑定(bind)库和运行时的胶水支持。

要生成 HTML 表单,您需要一个可以检查模型并为您输出 HTML 位的帮助程序库。例如,您的图书馆检查 User类,检测到它具有三个公共(public)字段 name , passwordbirthday , 并且, 根据使用 <model>.<property> 的约定作为输入的名称,输出

<form action="$$$$" method="$$$$">
<input name="user.name" />
<input name="user.password" />
<input name="user.birthday" />
<input type="submit" />
</form>

注意

  • URL 和方法只有在学习了一些上下文(例如路由)之后才能填写
  • 绑定(bind)库必须使用相同的命名约定来反序列化 User此表单提交的对象
  • 等等

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

关于scala - 在 Scalatra 中是否有处理表单提交的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12540916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com