小编Bur*_*ith的帖子

Grails渲染插件的空指针异常

我在使用渲染插件时遇到一些问题.它总是返回一个空指针异常.我看到了严重的类似问题,但我没有找到我错在哪里.

  • 我的模板代码:/views/appRetail/_report.gsp

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-strict.dtd">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
        <title>Welcome to Production !</title>
    </head>
    <html>
       <body>
        REPORT
       </body>
    </html>
    
    Run Code Online (Sandbox Code Playgroud)
  • 我的控制器代码:

    class AppRetailController {
    
      def pdfRenderingService
    
      def renderFormPDF() {
    
        def apps = App.findAll()
        new File("test.pdf").withOutputStream { outputStream ->
            pdfRenderingService.render(template: '/appRetail/report', model: [apps:apps], outputStream)
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪:

2015-04-17 10:31:54,552 [http-bio-8080-exec-4] ERROR   errors.GrailsExceptionResolver  - NullPointerException occurred when   processing request: [POST] /toolprod/appRetail/renderFormPDF
Stacktrace follows:
Message: null
Line | …
Run Code Online (Sandbox Code Playgroud)

grails grails-plugin

6
推荐指数
2
解决办法
1046
查看次数

Grails批量处理锁定在桌子上

我有一个Grails服务,它与SQL Server进行通信,后者执行超过80,000条记录的批量处理(更新数据库记录或创建新记录).在此过程中,这些过程正在锁定这些记录.如果其他人试图单独更新记录,则超时,等待该记录.如何在批量处理期间查询和更新记录?这样它不会被阻止?

我曾尝试使用flush:true,但它没有帮助.

grails grails-orm

6
推荐指数
1
解决办法
416
查看次数

Grails自定义验证 - 查询内部验证检查 - 更新时会发生什么?

我有一个自定义验证器,如 -

validator: { userEmail, userAccount ->

   if (userAccount.authenticationChannel == "ABC") {
      boolean valid = true;
      UserAccount.withNewSession {
      if (UserAccount.findByEmail(userEmail)){
         valid = false;
      }
      else if (UserAccount.findByName(userEmail)) {
         valid = false;
      }
Run Code Online (Sandbox Code Playgroud)

...

基本上,我需要根据某些条件进行一些验证,在我的验证中我需要执行查询.

但是,如果我这样做 -

def admin = new UserAccount(firstname:'Admin',email:'admin@example.com')


admin.save(flush:true)


admin.addToAuthorities("ADMIN").save(flush:true)
Run Code Online (Sandbox Code Playgroud)

它失败.

Grails正在运行验证,即使在更新时也是如此,因为电子邮件存在验证失败.如果我这样做,那会有什么不同

email {unique:true}

Grails说我不能写一个检查唯一性的自定义验证器.

grails

5
推荐指数
2
解决办法
1793
查看次数

grails覆盖重定向控制器方法

我试图覆盖默认的控制器重定向方法,似乎无法使下面的代码工作.

我创建了一个插件,我正在尝试使用"doWithDynamicMethods"来替换重定向.

def doWithDynamicMethods = {ctx ->
   application.controllerClasses.each() { controllerClass ->
      replaceRedirectMethod(controllerClass)
   }
}

void replaceRedirectMethod(controllerClass) {
   def oldRedirect = controllerClass.metaClass.pickMethod("redirect", [Map] as Class[])
   controllerClass.metaClass.redirect = { Map args, Map params ->
      // never seems to get here    
   }
}
Run Code Online (Sandbox Code Playgroud)

我有签名错误还是我错过了什么?我这样做的原因是我想改变重定向的uri如果满足某个条件但是使用logging/print语句我看到它在应用程序启动/编译时会出现在"replaceRedirectMethod"中但是它没有应用程序启动后,通过控制器进行重定向时,请进入此处.

grails grails-plugin

5
推荐指数
1
解决办法
1166
查看次数

是否可以在grails中动态映射域对象的表名?

我有一个看起来像的域名

class Foo {

  String name

  static mapping = {
     table 'foo'    
  }
}
Run Code Online (Sandbox Code Playgroud)

但我想做的更像是:

static mapping = {
   table "foo_${dynamicVarThatComesFromRequest}"
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是这是否可能?

谢谢!

database grails grails-orm

5
推荐指数
1
解决办法
2713
查看次数

在Grails应用程序启动期间执行SQL插入

我正处于开发阶段,尝试使用内存数据库并在Grails应用程序启动期间加载一些数据.我的问题是,有没有办法编写/配置可以在启动期间执行的SQL插入语句.

grails datasource

5
推荐指数
1
解决办法
4508
查看次数

Grails Spring安全休息基本配置

我在Grails中创建需要支持移动应用和网络应用的后端.我已设法compile ':spring-security-core:2.0-RC4'用于身份验证.它工作正常.

现在我想让移动应用程序调用api.所以我在BuildConfig.groovy中添加了以下内容.

compile ":spring-security-rest:1.4.1", {
    excludes: 'spring-security-core'
}
Run Code Online (Sandbox Code Playgroud)

我正在使用本教程spring-security-rest. http://alvarosanchez.github.io/grails-spring-security-rest/docs/guide/tokenStorage.html

在我的应用程序中,我有用户域,它扩展了SecUser.

这是我的Config.grrovy.

// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'm15.authentication.SecUser'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'm15.authentication.SecUserSecRole'
grails.plugin.springsecurity.authority.className = 'm15.authentication.SecRole'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
    '/':                              ['permitAll'],
    '/index':                         ['permitAll'],
    '/index.gsp':                     ['permitAll'],
    '/assets/**':                     ['permitAll'],
    '/**/js/**':                      ['permitAll'],
    '/**/css/**':                     ['permitAll'],
    '/**/images/**':                  ['permitAll'],
    '/**/favicon.ico':                ['permitAll']
]


grails.plugin.springsecurity.rest.login.active  = true
grails.plugin.springsecurity.rest.login.endpointUrl = '/api/login'
grails.plugin.springsecurity.rest.login.failureStatusCode = '401'

grails.plugin.springsecurity.rest.login.useJsonCredentials  = true
grails.plugin.springsecurity.rest.login.usernamePropertyName =  'username'
grails.plugin.springsecurity.rest.login.passwordPropertyName =  'password'

grails.plugin.springsecurity.rest.logout.endpointUrl = '/api/logout'

grails.plugin.springsecurity.rest.token.generation.useSecureRandom  = true
grails.plugin.springsecurity.rest.token.generation.useUUID  = …
Run Code Online (Sandbox Code Playgroud)

grails spring-security

5
推荐指数
1
解决办法
1865
查看次数

HTTPBuilder在Grails中编码utf-8

我在Grails中使用HTTPBuilder时遇到问题.

代码是这样的.

def http = new HTTPBuilder("theURL")

http.request(method, ContentType.JSON) {
    uri.path = "theURI"

    headers.'Authorization' = "OAuth  $accessToken"
    headers.'Accept' = "application/json"
    headers.'content-type' = "application/json;charset=utf-8"

    response.success = { resp, json ->
        result = json
    }
}

return result
Run Code Online (Sandbox Code Playgroud)

现在响应是带有"CobroN 1234"的JSON,但我需要"CobroNº1234"

我用curl尝试了这个并且响应很好"CobroNº1234",这让我觉得问题是HTTPBuilder而不是我的API响应请求.

我认为这是响应编码的问题.

grails utf-8

5
推荐指数
1
解决办法
2614
查看次数

Grails中的最大值和偏移量?

我有一些列表数据,我想做分页。但我不明白如何使用“最大”。这是我的简单查询代码,

def users = User.where{
  roles {
     id in roles.id 
  }
}.list(max: 1)
println users
Run Code Online (Sandbox Code Playgroud)
  • 当我将 max 设置为 1 时,它显示 1 个数据,
  • 我将 max 设置为 2,它显示了 2 个数据,
  • 我将 max 设置为 3,它显示了 2 个数据,
  • 我将最大值设置为 4,它显示 3 个数据和
  • 我将最大值设置为 5,它显示 4 个数据

我不明白什么是抵消。如果我想每页显示 5 个数据,我的偏移量应该是多少?

grails grails-orm

5
推荐指数
1
解决办法
2170
查看次数

访问对象列表上的唯一闭包会产生UnsupportedOperationException

我正在使用Grails 2.3.11并使用MongoDb插件mongodb:3.0.3.

我的代码看起来像这样:

def home() {
   List abcs = ABC.list()
   println abcs.unique { it.parent }
}
Run Code Online (Sandbox Code Playgroud)

访问唯一闭包时代码中断.

例外说:

ERROR errors.GrailsExceptionResolver- UnsupportedOperationException   occurred when processing request: [GET] /MongoAppInEcomEnv/product/home
Stacktrace follows:
Message: null
Line | Method
->>  148 | add       in java.util.AbstractList
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    108 | add …
Run Code Online (Sandbox Code Playgroud)

grails grails-orm mongodb

5
推荐指数
1
解决办法
80
查看次数