Grails-如何在唯一的URL上显示结果页面

时间:2018-08-01 19:16:53

标签: grails

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

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

例如,运行应用程序将导致数据显示在http://localhost:8080/myApp/myclass/save

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

编辑

这是我的urlMappings内容。

 class UrlMappings {

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

"/$controller/$action?/$id?"的url映射是一种很简单的处理方式,它是默认提供的(也由脚手架控制器使用)。

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