标签: grails-controller

如何获取Grails数据源的句柄

我想要一个grails控制器类中的连接对象的句柄(用groovy编写).我在某处读到了我需要首先获取数据源对象并在其上调用方法getConnection来获取连接对象.

我无法找到如何在grails控制器中获取数据源对象.请帮助.

grails-controller

4
推荐指数
1
解决办法
4648
查看次数

如何使用命名的URL映射从控制器重定向?

我有一个URL映射如下:

static mappings = {
        name register: "/register" {
            controller = "account"
            action = "createuser"
        }
}
Run Code Online (Sandbox Code Playgroud)

我想从控制器重定向使用这种映射,例如:

redirect mapping:'register'
Run Code Online (Sandbox Code Playgroud)

不幸的是,与createLink标签lib 不同,似乎重定向不接受mapping作为输入参数.

所以我的问题是:如何使用我的命名URL映射进行重定向?

grails url-mapping grails-controller

4
推荐指数
1
解决办法
2914
查看次数

Grails不会将变量传递给嵌套模板

当我从控制器渲染视图时,传递给视图的变量位于视图中呈现的所有模板的范围内,包括嵌套在多个深层的模板.

但是,当我从控制器渲染模板时(如在ajax样式中),只有初始模板似乎可以访问变量,并且嵌套模板调用不共享此信息.例:

Views & Templates:
a.gsp
_b.gsp
_c.gsp
_one.gsp
_two.gsp
_three.gsp

//PasserController.groovy
class PasserController{
    def v = {
       render(view:"a", model:[time:System.currentTimeMillis()])
    }

    def t = {
        render(template:"one", model:[time:System.currentTimeMillis()])
    }
}    

//a.gsp
A Time is: ${time}<br />
<g:render template="b" />

//_b.gsp
B Time is: ${time}<br />
<g:render template="c" />

//_c.gsp
C Time is: ${time}<br />

//_one.gsp
One Time is: ${time}<br />
<g:render template="two" />

//_two.gsp
Two Time is: ${time}<br />
<g:render template="three" />

//_three.gsp
Three Time is: ${time}<br />
Run Code Online (Sandbox Code Playgroud)

输出如下:

For passer/v …
Run Code Online (Sandbox Code Playgroud)

grails controller view grails-controller

4
推荐指数
1
解决办法
3829
查看次数

如何将Grails 2.1迁移到Grails 2.3应用程序?

我正在将我的应用程序从Grails 2.1迁移到2.3.迁移后我遇到了很多错误 - 我想要一些带有Grails 2.3和Spring集成的示例应用程序.

我做了一些HelloWorld示例应用程序,这些都运行正常.但即使我在我的应用程序中应用相同的东西,甚至在它给出错误的地方.因为我的应用程序非常大(100mb)并且我使用了很多与Spring,Hibernate和许多Grails插件的集成.

我没有找到任何类似于"从Grails 2.1迁移到Grails 2.3"的代码级文档.我无法从Grails或在线找到任何示例应用程序.

Grails官方文档,所有关于提供Grails META信息.

在我的main.gsp 229行:

<g:include controller="filter" action="tree"/>

Caused by: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: Error executing tag <g:include>: Unable to execute include: Request processing failed; nested exception is org.codehaus.groovy.grails.exceptions.GrailsRuntimeException: java.lang.IllegalStateException: Cannot reset buffer after response has been committed
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.createGroovyPageException(GroovyPageView.java:205)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.handleException(GroovyPageView.java:182)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderWithTemplateEngine(GroovyPageView.java:153)
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderMergedOutputModel(GroovyPageView.java:84)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
    at org.codehaus.groovy.grails.web.sitemesh.SpringMVCViewDecorator.render(SpringMVCViewDecorator.java:67)
    ... 51 more
Caused by: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:include>: Unable to execute include: Request processing failed; nested exception is org.codehaus.groovy.grails.exceptions.GrailsRuntimeException: java.lang.IllegalStateException: …
Run Code Online (Sandbox Code Playgroud)

grails grails-plugin grails-controller grails-2.0

4
推荐指数
1
解决办法
4239
查看次数

将自定义标头添加到“渲染为JSON”后的响应中

我试图使用Grails过滤器将自定义HTTP标头添加到一组特定控制器的响应中:

class ApiFilters {
   def filters = {
      xwingFilter(uri:'/api/**') {
         after = {
            response.setHeader('X-Wing', 'foo')
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

如果控制器呈现视图或文本,则标题将添加到响应中。如果控制器使用“ render as JSON”,则不添加标头。看起来JSON转换器正在关闭输出流并立即发送它。那正确吗?

我可以使用Grails拦截器,但必须在多个控制器中复制它。关于如何实现此目标的任何想法?

grails grails-controller grails-2.0

4
推荐指数
1
解决办法
2980
查看次数

flash对象映射如何在grails框架内工作

Flash,它是一个请求的临时存储映射.

我想知道如何在grails 核心框架上实现它

特别是我对负责将flash地图放入请求中的类感兴趣,然后在请求处理完成后将其取出.

grails grails-controller

4
推荐指数
1
解决办法
1681
查看次数

如何在grails控制器中使用路径变量?

我一直在尝试在grails控制器中使用路径变量,但我无法实现它.背后的意图是验证提交给我需要强制的URL的参数.我无法通过RequestParam实现它,所以我切换到PathVariable,以便提交没有所需param的url应该由grails控制器本身过滤掉,而不是我添加if/else检查有效性.

所以,我可以说明如下:我的网址如下: -

'<appcontext>/<controller>/<action>?<paramName>=<something>'
Run Code Online (Sandbox Code Playgroud)

现在,为了使'paramName'成为强制性的,我没有在Grails中找到任何方法(Spring MVC提供了@RequestParam注释,它可以使我''required'为真).

我认为另一种选择是使用路径变量,以便'paramName'可以包含在URL本身中.所以我试着跟随:

'<appcontext>/<controller>/<action>/$paramName'
Run Code Online (Sandbox Code Playgroud)

为了验证上面的URL,我编写了特定的映射,但有些映射不起作用..

以下是我写的具体映射: -

"/<controllerName>/<action>/$paramName" {
            controller:<controller to take request>
            action:<action to do task>
            constraints {
                paramName(nullable: false,empty:false, blank: false)
            }
        }
Run Code Online (Sandbox Code Playgroud)

我尝试在控制器中使用类似@PathVariable和@RequestParam的弹簧注释,如下所示: -

 def action(@PathVariable("paramName") String param){
        //code goes here
    }
Run Code Online (Sandbox Code Playgroud)

parameters grails grails-controller

4
推荐指数
1
解决办法
6643
查看次数

Grails重定向打破params类型

我的Grails代码有一个搜索功能,在执行findAllBy查询后重定向到另一个控制器操作:

def results = Foo.findAllByBar(baz)
redirect(action: "result", params: [results: results])
Run Code Online (Sandbox Code Playgroud)

findAllByBar按预期返回带有模型的ArrayList,但在重定向之后,接收操作获得一个String数组.更糟糕的是,当只有一个结果时它甚至没有得到一个数组,它只是得到一个字符串.

鉴于我必须在接收视图中迭代结果,在字符串上执行它将仔细地单独打印每个字母.我们都同意这可能不是理想的行为.

grails grails-controller

3
推荐指数
1
解决办法
4335
查看次数

域类hasMany无法添加条目

我是Grails noob所以请原谅我的noob问题.
我已经创建了一个域类User和Device.用户有许多设备:设备和设备属于用户:用户.
重要的是,只有一个设备永远不会属于两个用户,因此我的UserController代码如下所示:

class UserController {

static allowedMethods = [create: 'POST']

def index() { }

def create() {
    def user = User.findByUsername(request.JSON?.username)
    def device = Device.findById(request.JSON?.deviceId)
    if (device) {
        device.user.devices.remove(device)
    }
    // device can only be owned by 1 person
    def new_device = new Device(id: request.JSON?.deviceId, type: request.JSON?.deviceType)

    if ( !user ) {
        user = new User(
                username: request.JSON?.username
        )
        user.devices = new HashSet() // without this I get null on the add in next line
        user.devices.add(new_device)
        user.save()

        if(user.hasErrors()){ …
Run Code Online (Sandbox Code Playgroud)

grails grails-orm grails-controller grails-domain-class grails-2.0

3
推荐指数
1
解决办法
4588
查看次数

在 Grails 控制器中对父子对象进行排序

嗨,我正在尝试在呈现 json 文件之前在父和子的控制器中执行排序,但我不确定如何去做。这是我所拥有的(原始代码摘录):

class Parent{
    static hasMany = [children:Child]
    String name
    Date dateCreated
}

class Child {
    static belongsTo = [parent:Parent]
    String name
    Date dateCreated
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器 .groovy 文件中,我有:

def list(){
    def result = Parent.listOrderByDateCreated(order: "desc")
    .... more code ....

    withFormat{
        json {render result as JSON}
        xml {render result as XML} 
    }
}
Run Code Online (Sandbox Code Playgroud)

并且上述工作(父项按创建日期排序)但我不确定如何按列表中创建的日期对所有子项进行排序。

提前谢谢你的帮助。我也在使用 Grails 2.3.2

grails groovy grails-controller grails-domain-class

3
推荐指数
1
解决办法
890
查看次数