我有一个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。我该如何修改“映射”?
答案 0 :(得分:0)
您要保存的每个域对象都将具有一个自动生成的ID(假设您正在使用GORM,这肯定有可能)。听起来您想要的只是/ show / id页面,您可以在其中通过ID访问特定对象。
"/$controller/$action?/$id?"
的url映射是一种很简单的处理方式,它是默认提供的(也由脚手架控制器使用)。
如果您不想使用自动生成的ID(也许是将对象从一个数据库移动到另一个数据库,还是出于某种原因而更新ID?),则可以考虑使用java.util.UUID.randomUUID()
来生成随机,唯一的标识符并将其另存为对象上的字段。然后,您可以在输入参数中使用.findByUuid。