【问题标题】:Play framework 2: reverse routing with parameter in view file syntax播放框架2:在视图文件语法中带参数的反向路由
【发布时间】:2013-10-04 07:47:00
【问题描述】:

Item 是模型类,Items 是控制器类。现在我正在尝试使用带参数的反向路由,但它失败了。如何解决?

查看:

@(item: Item)

<a href="@routes.Items.delete(@item.id)">delete</a>

路线:

GET     /items/$id<[0-9]+>           controllers.Items.show(id: Long)
GET     /items/add                  controllers.Fruits.addForm()
POST    /items/add                  controllers.Items.add()
DELETE  /items/$id<[0-9]+>           controllers.Fruits.delete(id: Long)

我得到的错误

illegal start of simple expression

它指向第二个@ 字符

【问题讨论】:

  • 尝试删除第二个@
  • @yan,是的,现在可以编译了,谢谢。但是如果我单击生成的链接,则会调用 GET 路由,而不是 DELETE
  • 它被调用是因为您的链接转到 GET 端点。您不能从 HTML 链接触发 DELETE。
  • @yan,我已经更新了路线。那么如何触发DELETE呢?表单和提交按钮?

标签: html scala playframework-2.0 playframework-routing


【解决方案1】:

不妨将 cmets 中的讨论带入实际答案。您的代码未编译,因为参数中有一个额外的 @

至于为什么您没有达到 DELETE 端点是因为您不能让常规 HTML 链接触发除 GET 之外的动词,并且您只能将表单提交到 POST。如果要调用删除,则需要使用 JavaScript。例如,您可以使用类型设置为"DELETE" 的jQuery 的ajax 方法。在您的情况下,您可以创建一个 onclick 处理程序,该处理程序反过来发送一个 ajax 请求。另请注意,并非所有浏览器都支持这样的 DELETE 动词。

【讨论】:

    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多