【问题标题】:Grails - how to display result page at a unique URLGrails - 如何在唯一的 URL 处显示结果页面
【发布时间】:2018-08-01 19:16:53
【问题描述】:

我有一个 grails 应用程序,它接受用户输入(创建页面/方法),然后用户单击保存按钮(执行服务的保存方法),然后在页面上显示结果(列表方法),例如 @ 987654321@.

用户希望将每个结果运行保存到一个唯一的 URL,以便他们可以共享、添加书签、稍后保存等等。我不知道该怎么做,谷歌搜索几乎没有。

例如,应用程序运行会导致数据显示在http://localhost:8080/myApp/myclass/systemname/datetimestring/someuniquedata/

这甚至可能吗?任何指针都非常感谢。

编辑

这是我的 urlMappings 内容。

 class UrlMappings {

     static mappings = {
         "/$controller/$action?/$id?"{
             constraints {
                 // apply constraints here
             }
     }

         "/" {
             controller = "api"
             action = "create"
         }

         "500"(view:'/error')
    }
 }

当我显示结果时,它是通过此处显示的列表方法完成的。

def list(Integer max) {
    List<Api> api = Api.findAllBySessionId(session.id, [sort:'dateCreated'])
    api = api[-2..-1]
    [apiInstanceList: api, apiInstanceTotal: api.size()]
}

所以我有唯一的会话 ID。我需要如何修改“映射”?

【问题讨论】:

    标签: grails


    【解决方案1】:

    您保存的每个域对象都会有一个自动生成的 ID(假设您使用的是 GORM,这很可能)。听起来您所要求的只是一个 /show/id 页面,您可以在其中通过 ID 访问特定对象。

    "/$controller/$action?/$id?" 的 url 映射是处理此问题的一种非常简单的方法,并且默认提供(也由脚手架控制器使用)。

    如果您不想使用自动生成的 ID(也许您正在将对象从一个数据库移动到另一个数据库,或者出于某种原因更新 ID?)您可以考虑使用java.util.UUID.randomUUID() 来生成一个随机的唯一标识符并将其保存为对象上的字段。然后,您可以将 .findByUuid 与输入参数一起使用。

    【讨论】:

    • 是的,我正在生成并使用会话 ID 来同时使用应用程序!那可行。明天我会深入研究这个,如果我有任何问题,我会在这里跟进。谢谢!
    • 您的编辑依赖于会话 ID,会话 ID 会随着会话的变化而变化(时间取决于会话持续的时间),并且不能从一个用户重复到另一个用户。我想这不是你想要的。
    猜你喜欢
    • 2014-03-10
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多