Grails 从服务中渲染视图?

2024-03-13

我刚刚开始在 Grails 中使用服务,在尝试从服务内部渲染页面时遇到问题,我尝试了如下所示的几种方法,但没有成功:

服务电话 1:

GroupCheckService.isEnabled(userObjects.group.notenabled)

服务尝试1:

import grails.gsp.PageRenderer

class GroupCheckService {

    PageRenderer groovyPgeRenderer
    static transactional = false

    def isEnabled(boolean notenabled) {

        if(notenabled == true){
            groovyPgeRenderer.render(view: '/locked')

        }else{
            return
        }

    }
}

服务电话 2:

GroupCheckService.isEnabled(render, userObjects.group.notenabled)

服务尝试2:

class GroupCheckService {

    PageRenderer groovyPgeRenderer
    static transactional = false

    def isEnabled(Closure render, boolean notenabled) {

        if(notenabled == true){
            render.call view:"/locked"

        }else{
            return
        }

    }
}

现在,当我尝试方法 1 时,我没有收到错误,但当 IF 满足时,页面不会呈现,使用方法 2 时,我收到以下错误:

no such property render

我真的很感激一些关于如何实现这一目标的建议或帮助,提前致谢:)


您不应该从服务渲染视图 - 这是控制器的一部分。

使用该服务进行业务逻辑和/或(事务)数据库操作。

From Grails 文档 http://grails.org/doc/latest/guide/services.html:

Grails 中的服务是将大部分逻辑放入应用程序中的地方,让控制器负责通过重定向等处理请求流。

如果你真的想从服务中渲染视图,Mrhaki 已发表博客 http://mrhaki.blogspot.de/2012/03/grails-goodness-render-gsp-views-and.html关于使用PageRenderer从服务。

import grails.gsp.PageRenderer

class GroupCheckService {
    PageRenderer groovyPageRenderer

    def isEnabled(Closure render, boolean notenabled) {
        if(notenabled == true){
            groovyPageRenderer.render view: "/locked"
        }else{
            return
        }
    }
}

请注意,您不能使用Sitemesh布局由于PageRenderer在请求范围之外工作。

最好的方法是重新设计您的应用程序,将渲染内容保留在控制器中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails 从服务中渲染视图? 的相关文章

随机推荐

  • Angular UI 路由器忽略 HTML5 模式关闭

    Angular UI Router 忽略 HTML5Mode false 并且它以无法添加书签或直接登陆的方式呈现链接 app js stateProvider state search url search views main wrap
  • 在 Fortran 中写入现有文件而不覆盖

    我有一个由 Fortran 程序编写的现有文件 已格式化 我想在文件开头添加几行 我们的想法是在不复制原始文件的情况下完成此操作 我可以在文件末尾添加一行 open 21 file myfile dat status old action
  • 从 Java 7 升级到 Java 8 后签名引用失败

    我最近已将 Java 从 7 升级到 8 并且我面临使用 saml 请求的服务之一的问题 我收到以下错误 Jan 05 2015 3 42 06 PM org jcp xml dsig internal dom DOMReference v
  • 在项目的根目录下创建 .env 文件

    我正在尝试从 github 下载一个 Django 项目 其中一个要求是 由于该项目使用 python de Couple 因此您需要在项目的根目录上创建一个名为 env 的文件 其中包含三个值 如下所示 DEBUG True SECRET
  • 将单词 (.docx) 转换为 docbook

    我的任务是找到一种将大量 docx 文件转换为 docbook 5 的方法 目前 我们在 openoffice 中打开该文件并保存到 docbook 这是一项耗时的任务 但我相信有更好的方法 然后 这些文件将被进一步处理为我们的自定义rel
  • 如何在 CMake 中删除字符串中的一行文本,解决 CMake 缺乏基于行的正则表达式匹配的问题?

    我发现 CMake 并没有按照我预期的方式执行 RegEx 显然 其他人也遇到了同样的问题 https cmake org pipermail cmake 2007 October 017107 html问题是 CMake 不是基于行的 当
  • Pip无法安装枕头

    当尝试使用 pip 安装枕头时 会产生此错误 我尝试过重新安装安装工具 但没有效果 我在安装了 Diet Pi 的 pi 0 上运行 pip install pillow Looking in indexes https pypi org
  • Objective-C 中的文本解析?

    是否有任何库可以在 Objective C iPhone 应用程序中解析 Textile Textile 到 HTML C 库也可以工作 Update 我在 C Obj C 中找不到任何足够开发的库 但我确实找到了一个用 Javascrip
  • 多态性、泛型和匿名类型 C#

    考虑以下场景 文档 gt 部分 gt 正文 gt 项目 文档有部分 部分包含正文 正文有一些文本和项目列表 这些项目就是问题的内容 有时项目是基本的字符串列表 但有时项目包含自定义数据类型的列表 So public class Docume
  • 为什么 git Remote prune origin 会删除我的本地标签?

    我有几个标记引用来自本地分支和远程跟踪分支的提交 或这些提交的祖先 我想删除对分支和标签的引用origin跑完后git fetch git remote prune origin dry run 但输出表明它会修剪我的本地标签 即使是我手动
  • YDN DB 包含问题

    我已经包含了 YDN DB 文件 ydn db isw core crypt qry dev js 来加密角度应用程序中的索引数据库 它被添加到 socket io 1 4 5 js 之后的 index html 主体部分中 加载器 spi
  • 从 saber API 发出票据

    我们已经成功实施了 sabre 低价搜索和预订工作流程并创建了 PNR 现在 我想使用 api 开具该 PNR 的机票 My workflow is 1 BargainFinderMaxRQ find 2 EnhancedAirBook b
  • 通过surfaceview使用zxing条码阅读器

    我正在创建一个扫码机应用程序 我想使用Zxing要读取条形码 我的应用程序有一个表面视图并向其中显示相机 但现在我想从 SurfaceView 相机扫描条形码 我使用它的原因是我的布局中的表面视图下有两个 Edittexts 来显示条形码的
  • 如何处理损坏的 Git 对象文件?

    当我接近配额时 我做了一次 Git pull 结果 我认为 得到了一个损坏的文件 git pull walk dffbfa18916a9db95ef8fafc6d7d769c29a445aa fatal object d4a0e759949
  • 是否可以从 Scala(spark) 调用 python 函数

    我正在创建一个 Spark 作业 需要使用用 python 编写的函数将列添加到数据帧中 其余的处理是使用 Scala 完成的 我找到了如何从 pyspark 调用 Java Scala 函数的示例 https community hort
  • 安装 MSDeploy 包时如何保留现有文件?

    我需要保留一些由我的网站生成的文件 是否可以使 MSDeploy 不删除任何文件 并且仅当包包含较新版本的文件时才覆盖现有文件 enableRule 跳过新文件规则将跳过对具有较新写入时间的文件的更新 enableRule 不删除规则将阻止
  • 如何移动然后删除MySQL中的字段

    我试图将字段从一个表移动到另一个表 然后从第一个表中删除它 我遇到的问题是它可以很好地移动数据 但不会从第一个表中删除它 这是我的代码 INSERT INTO out tickets SELECT FROM tickets DELETE F
  • 什么推理导致“包含递归定义的序列表达式编译不正确”

    问题尽管尾调用位置存在堆栈溢出 但仅限 64 位 https stackoverflow com q 35751350 1243762导致发现一个bug https github com Microsoft visualfsharp iss
  • 参数类型“Map Function()”无法分配给参数类型“Map

    这最初可能有效 但在 firebase 更新后 现在给我这个错误 我已在给出错误的部分添加了星号 错误消息已添加到代码下方 import package cloud firestore cloud firestore dart class
  • Grails 从服务中渲染视图?

    我刚刚开始在 Grails 中使用服务 在尝试从服务内部渲染页面时遇到问题 我尝试了如下所示的几种方法 但没有成功 服务电话 1 GroupCheckService isEnabled userObjects group notenable