我将向用户发送以下网址
示例:http://ipaddress.com/MyApp/user/verify?val=676687jhjhjdfhjdhfjdfhemail=email@gmail.com
当用户点击此内容时,我需要verify()
中的方法调用UserController
才能启动,并且应该将其分配给名为val
和{{1}的变量}。
然后我将与数据库进行交叉检查并检查email
是否等于val
我该怎么做?我知道如何将URL发送给用户,但我不知道如何编写点击URL后将触发的方法。
email
答案 0 :(得分:1)
你可以这样做......
// grails-app/controllers/com/demo/UserController.groovy
package com.demo
class UserController {
def verify(String val, String email) {
// do whatever you need to do here...
}
}
然后在GSP中,您可以使用以下内容创建指向该链接的链接:
<g:link action="verify" controller="user" params="[val:'someValueForVal', email: 'someValueForEmail']">Click Here</g:link>
如果您的控制器为UserController
,则代码中的控制器名称应为user
。
修改强>
基于下面评论中的一个问题,我现在想知道你真正想到的是使用命令对象,这样你的控制器动作就可以接受一些任意的对象类型,如下所示:
// grails-app/controllers/com/demo/UserController.groovy
package com.demo
class UserController {
def verify(SomeClass someClass) {
// do whatever you need to do here...
// someClass.val will be equal to params.val
// someClass.email will be equal to params.email
}
}
class SomeClass {
String val
String email
}
有关在Grails中使用命令对象的更多信息,请访问http://grails.org/doc/latest/guide/theWebLayer.html#commandObjects。
答案 1 :(得分:-1)
很少有事情需要注意:
- 当您向用户发送网址时,请确保该网址有效,即它应该是:http://example.com/user/verify?...
而不是:/user/verify?...
。发送类似
<g:link controller="user" action="verify" params="[val:'val', email: 'email']" absolute="true">Click Here</g:link>
或
<g:link controller="user" action="verify" params="[val:'val', email: 'email']" base="${grailsApplication.config.grails.serverURL}">Click Here</g:link>
- 如果您正在使用spring安全性并且您的控制器是安全的,并且您希望用户在没有登录的情况下点击此操作,那么使用IS_AUTHENTICATED_ANONYMOUSLY
的所有用户都可以使用make
@Secured('IS_AUTHENTICATED_ANONYMOUSLY')
def verify (String val, String email) {
...
}
- 你的行动很好。它应该在UserController
- 您在问题中粘贴的网址缺失&
。要在您的操作中获得val
和email
,您的网址应该是:
http://ipaddress.com/MyApp/user/verify?val=676687jhjhjdfhjdhfjdfh&email=email@gmail.com