单击URL时触发方法 - 初学者

时间:2014-06-24 12:59:53

标签: grails groovy

我将向用户发送以下网址

示例:http://ipaddress.com/MyApp/user/verify?val=676687jhjhjdfhjdhfjdfhemail=email@gmail.com

当用户点击此内容时,我需要verify()中的方法调用UserController才能启动,并且应该将其分配给名为val和{{1}的变量}。

然后我将与数据库进行交叉检查并检查email是否等于val

我该怎么做?我知道如何将URL发送给用户,但我不知道如何编写点击URL后将触发的方法。

email

2 个答案:

答案 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

之下

- 您在问题中粘贴的网址缺失&。要在您的操作中获得valemail,您的网址应该是:

 http://ipaddress.com/MyApp/user/verify?val=676687jhjhjdfhjdhfjdfh&email=email@gmail.com