我在使用渲染插件时遇到一些问题.它总是返回一个空指针异常.我看到了严重的类似问题,但我没有找到我错在哪里.
我的模板代码:/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服务,它与SQL Server进行通信,后者执行超过80,000条记录的批量处理(更新数据库记录或创建新记录).在此过程中,这些过程正在锁定这些记录.如果其他人试图单独更新记录,则超时,等待该记录.如何在批量处理期间查询和更新记录?这样它不会被阻止?
我曾尝试使用flush:true,但它没有帮助.
我有一个自定义验证器,如 -
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说我不能写一个检查唯一性的自定义验证器.
我试图覆盖默认的控制器重定向方法,似乎无法使下面的代码工作.
我创建了一个插件,我正在尝试使用"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"中但是它没有应用程序启动后,通过控制器进行重定向时,请进入此处.
我有一个看起来像的域名
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)
我想知道的是这是否可能?
谢谢!
我正处于开发阶段,尝试使用内存数据库并在Grails应用程序启动期间加载一些数据.我的问题是,有没有办法编写/配置可以在启动期间执行的SQL插入语句.
我在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中使用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响应请求.
我认为这是响应编码的问题.
我有一些列表数据,我想做分页。但我不明白如何使用“最大”。这是我的简单查询代码,
def users = User.where{
roles {
id in roles.id
}
}.list(max: 1)
println users
Run Code Online (Sandbox Code Playgroud)
我不明白什么是抵消。如果我想每页显示 5 个数据,我的偏移量应该是多少?
我正在使用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)