现在我只是使用params
函数来获取已发布到 URL 的数据。
有没有其他方法可以像在 Play Framework 中那样处理 Scalatra 中的表单?Scalatra 是否支持既可用于创建表单又可自动填写表单的对象?
Scalatra 没有提供如此复杂的功能。从难以实施的意义上说,它并不复杂,它的复杂性来自于参与的各方的数量。
首先,您需要 aModel
来表示域中的对象,而 Scalatra 默认情况下不提供任何模型库。然后运行时使用此模型将 HTTP 请求中设置的任意字符串转换为某个模型的实例。例如
GET
并指定了一个参数 like user.id
,则绑定软件将此字符串转换为 type 的对象,User
通过其 ID 在数据库中找到。POST
,指定三个参数,如,user.name
并且user.password
未指定a ,则运行时构建一个类型的对象,该对象准备好放入数据库中班级user.birthday
user.id
User
User.save()
User
PUT
(或 Scalatra 文档中解释的等价物)并且包含user.id
and user.birthday
,首先User
通过 ID 检索 an,然后更新其生日,最后提供给您的控制器,准备调用User.save()
如您所见,这需要模型库、绑定库和运行时中的胶水支持。
要生成 HTML 表单,您需要一个帮助程序库来检查模型并为您输出 HTML 位。例如,您的库检查User
该类,检测到它具有三个公共字段name
、password
和birthday
,并且根据使用<model>.<property>
作为输入名称的约定,输出
<form action="$$$$" method="$$$$">
<input name="user.name" />
<input name="user.password" />
<input name="user.birthday" />
<input type="submit" />
</form>
注意
User
object submitted by this formOnce you have all the pieces put together, you have made up an MVC framework, so what's the point in using a tiny, RESTful software like Scalatra?