我想在grails上使用groovy上传一个图像。
我的普惠制页面如下(我展示的是原版的简化版)
我需要这个映射,否则MySql将创建一个小blob,它非常小,以适合图像
static constraints = {
myPicture(nullable:false)
}
}
在控制器上,我有一个名为save的操作,如下所示:
class Post {
byte[] myPicture
static mapping = {
myPicture type
我有这个密码
def errorMap = validateParams(params)
if (errorMap) {
flash.errorMap = errorMap
return
}
我的问题是:我能否将第1行中的作业与第2行中的条件评估结合起来,形成一条如下所示的直线:
if (flash.errorMap = validateParams(params)) {
return
}
这样做是不好的做法吗
谢谢
在我看来,这是一个非常好的做法。调用函数和测试其返回
在我们新的软件项目中,我们有以下要求:一个网页应该显示一组数据。该数据应由分配给角色的某些用户(即经理)编辑,并且只能由其他用户查看。棘手的部分通过一个示例来描述:
用户页面由地址数据和帐户信息组成。addess数据应由用户和管理者编辑,所有用户均可查看,而账户信息只能由实际用户和管理者查看
我读了很多关于SpringSecurity的信息。它提供了一个非常好的框架来授予URL、方法甚至域类的权限。但我需要的是字段级ACL。至少,我现在是这么想的
所以,问题是:如何使用Grails解决这个问题
当我将grails项目部署到生产服务器上时,我遇到了一个问题,这是一个限制,我只能登录到/var/log/tomcat5/catalina.out。这意味着我必须使每个日志(包括stacktrace)写入该文件。我尝试了以下其他示例,但似乎不起作用,我仍然收到错误“stacktrace.log上的权限被拒绝”
这是我的log4j配置
log4j = {
// Example of changing the log pattern for the default console
/
我对Grails测试操作符感到困惑
这句话:
<g:if test="${!(preferences.displayOption.equals('ANA') || preferences.displayOption.equals('FLOP'))} ">
${!(preferences.displayOption.equals('ANA') || preferences.displayOption.equals('FLOP'))}
</g:if>
这怎么可能?我正在
我有一个带有acegi security的Grails应用程序,我刚刚发现一些用户的enabled字段为false,当他们在审批流程后被设置为true时
我的问题是:这可能是因为达到了最大登录尝试次数?如果是,在哪里配置
谢谢。插件不支持最大登录尝试检查。如果实现了它,它可能是自定义代码,但可能会使用事件处理程序。如果是自定义代码,您可能会在resources.groovy中定义bean,和/或可能在BootStrap.groovy中更改bean属性。如果它使用的是事件,则回调将位于Securi
在grails项目中,我根据参考文档添加了一个定制的ivy解析器
但是,此解析器需要jsch和其他一些JAR。如何将它们放在项目的构建类路径上,以便ivy使用它们
这是我的BuildConfig.groovy
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-
标签: Grails
bytecode-manipulation
我有一个grails应用程序,已经部署在我的linode盒上。它正常运行了几天,但现在在所有页面上都出现了此错误:
Caused by: java.lang.VerifyError: (class: org/codehaus/groovy/runtime/InvokerInvocationException, method: getMessage signature: ()Ljava/lang/String;) Illegal constant pool index
谷歌搜索表明这是一个编织问
基于,我想我可以在(例如)resources.groovy
def currentEnv = Environment.current
if (currentEnv == Environment.CUSTOM && currentEnv.name == 'mock') {
println 'Do some stuff for the mock env'
}
if语句中的代码应该在我运行时执行(例如)grails run app-Denv=mock,但事实并非如此,我做错了
标签: Grails
criteriagormnhibernate-criteria
其中,params.filters在JSON文本之后
if (params.filters) {
def o = JSON.parse(params.filters);
def groupOp = o.groupOp
def fields = o.rules.field
def values = o.rules.data
def op =
我在Config.groovy
storeFront.cms.endpoint = "http://10.60.33.51:27110/file_source"
我尝试使用以下方法阅读:
ConfigurationHolder.config('storeFront.cms.endpoint')
我在某个地方读到,应该使用taglibs和controllers中可用的grailsApplication变量读取配置参数,但在我的例子中,我试图从src/groovy下的类中读取它
当应用程序启动时
我经常在论坛上阅读Grails版本1.4,看起来Grails从1.3.7发展到了2.0。1.4是最初的版本控制计划,然后他们决定将其命名为2.0
只是好奇
问候
乔纳斯是的。
是的。
我的验证如下所示:
static constraints =
{
someProperty validator: { val, obj ->
// a lot of code here
}
}
如何定义将传递给此验证的外部函数(val、obj REQUIRERD)?
现在我的代码在约束闭包中不清楚。。。someProperty的验证代码太多。
我怎样才能改变它 在src/groovy目录中创建groovy类,如:
public class CustomVali
在grails应用程序中,我想用自定义数据装饰每个日志。当前需要的只是在日志消息前加上当前用户名
我对如何解决这个问题有些想法:
-
-使用groovy的元类工具拦截每个日志调用并修改消息内容
我只想有一些易于理解和维护的功能:这是一个非常低优先级的功能,所以我不想花太多时间来摆弄它
有没有关于快速简便的方法来实现这一点的建议?我想伯特·贝克维思(Burt Beckwith)早在一月份就谈到了这一点。他展示了如何使用log4jmdc功能和Servlet过滤器将用户名输入到日志条目中我想Burt
考虑Grails中的以下域类:
enum MyEnum { One, Two, Three }
class MyClass {
Collection mys = []
static hasMany = [
mys: MyEnum
]
static mapping = {
mys lazy: true
}
}
在Postgres 9.1数据库上运行带有“create drop”的应用程序时,我遇到以下错误:
Unsucce
我正在使用Grails框架。在我的用户控制器中,有一个名为“active”的布尔字段,用于控制是否允许用户登录。登录操作在用户登录时检查此值
我的域名:
class User {
Boolean active
}
我的视图(edit.gsp):
该值正确地保存到数据库中,但我希望帐户状态下拉列表显示“已启用”或“已禁用”,而不是现在的“1”或“0”
加载编辑页面时,它还应显示当前值。当前,它始终显示值“1”,即使用户在数据库中的值为“0”
这似乎很容易,但我还没有找到任何人在GSP中设
我有一个GrailsWeb应用程序在德国本地化的机器上运行
Grails如何确定要使用的语言?来自网络浏览器?从系统设置?这种情况会随着用户界面所用语言的改变而改变吗(例如,使用这种语言:)?如果不是,它是如何变化的
原因是(很少)有用户通过(英语)终端服务器访问webapp。还有一些奇怪的数字输入行为(逗号,点,…)来自
默认情况下,将从传入的
接受语言标题。但是,您可以向用户提供该功能
通过简单地将名为lang的参数传递给Grails来切换区域设置
作为请求参数:
/书籍/列表?lang=e
标签: Grails
code-coveragecobertura
我正在开发一个grails应用程序。我们使用cobertura生成代码覆盖率报告。现在我想修改grails项目,以便在代码覆盖率低于90%的情况下构建失败。
如何在grails中实现这一点?我不认为代码覆盖率插件直接支持这一点,但通过连接到功能强大的grails build events基础设施,这一点很容易做到。通过将其放入脚本/_Events.groovy中,如果覆盖率低于某个阈值,则生成将失败:
eventStatusFinal = { message ->
if (messag
我正在使用grails的导出插件。我的控制器中有以下代码:
if(params?.format && params.format != "html"){
response.contentType = grailsApplication.config.grails.mime.types[params.format]
response.setHeader("Content-disposition", "attachment; filename
我有一个这样的控制器
class MyController {
def index() { }
def list(Integer max) { }
def create() { }
}
我有不同的角色,如“管理员”、“用户”
我希望只有“管理员”才能看到“创建”视图。知道我使用的是Spring安全性,很清楚如何实现这一点。通过数据库使用Requestmap锁定URL或使用注释
如果使用Requestmap,只需锁定特定角色集的URL即可。如果您
我刚刚有机会试驾了一周的VPS,并决定在上面试用Grails。问题是,它会自动关闭
详情:
VPS-512MB内存,Ubuntu 12.10 x64(x64没有特殊原因)
Oracle Java 7u17
最新GVM 0.9.5
Grails2.2.1
我所做的是遵循这个教程,这是非常基本的。在我运行grails run app之前,一切都很顺利
在初始化之后,它显示运行了5秒,我甚至可以开始加载页面,但它突然在终端中显示Killed。这是终端显示的:
root@jp:/var/grails
如何覆盖grails域类中一对多关系字段的getter和setter?我知道如何覆盖作为单个对象的字段的getter和setter,但我对集合有问题。我的情况如下:
我有实体域类,它有许多标题。现在,我想覆盖getter for titles,只获取带有isActive等于true标志的标题。我尝试过类似的方法,但不起作用:
class Entity {
static hasMany = [
titles: Title
]
public Set<
我退房了,但出于某种原因,这些解决方案对我不起作用。它们可能只适用于Grails1.3.7,而不适用于Grails2.2.1
我有一个命令对象OuterObjectCommand,它包含InnerObjectCommand的列表。我在控制器中手动填充它,然后调用validate。在OuterObjectCommand上调用validate()似乎不是在验证InnerObjectCommand列表,因此我将分别验证列表中的所有元素。我要做的是将InnerObjectCommand对象和OuterO
如果我有两个表域color和shade,其中color有许多[shade:shade]和shade属于[color:color]
我得到了以下数据:
ID color_name color_type
---- -------- ----------
22 RED CRAYON
23 GREEN PAINT
45 GREY CRAYON
ID color_id
我正在评估Grails,因此必须为遗留数据库映射持久层。我从三张桌子开始:
克隆
其他属性包括:主键id
CloneSet
其他属性包括:主键id
Clone2CloneSet
只有两个外键cloneID和cloneSetID
域类的编码如下所示:
类克隆{
//除其他外
静态hasMany=[CloneSet:CloneSet]
静态映射={
id(生成器:“标识”)
cloneSets(
joinTable:[名称:'Clone2CloneSet',键:'cloneID',列
我需要将文件下载“按钮”从g:link更改为g:imageButton。它们都使用相同的参数在控制器中调用相同的方法。就我所知,g:link和g:imageButton都使用相同的参数执行相同的代码。然而,新的g:imageButton并没有提供csv文件下载。它执行时没有任何问题,但不会创建文件下载
两者都使用GET。g:link(有效)在控制台中给出以下消息:
Resource interpreted as Document but transferred with MIME type te
我正试图通过GoogleOAuthAPI检索出生日期和婚姻状况。通过将作用域设置为&,我获得了下面提到的信息。请求URL为
我的个人资料中设置了生日和婚姻状况,但我无法获取此信息。可能是什么问题?将范围设置为
https://www.googleapis.com/auth/plus.login
请求url为
https://www.googleapis.com/plus/v1/people/me
注意:-如果用户将关系状态和生日设置为公共状态,则仅对您可用
看看这个
我已经尝试过使用它,并公
给定这些域类:
class Team {
hasMany = [players: Player, logsEntries: LogEntry]
}
class Player {
belongsTo = [team: Team]
def beforeDelete() {
team.addToLogEntries('player deleted')
}
}
class LogEntry {
belongsTo = [team: Team]
}
我在删除之前的befo
我想在每天的某个时间(晚上10点)执行cron作业。目前我正在使用以下代码,但它不起作用:
class ReviewBatchJob {
private static final logger = LogFactory.getLog(this)
def batchReviewScheduler
static triggers = {
cron cronExpression: "0 0 22 1/1 * ? *"
}
def execu
我有一个服务,我想使用TypeChecked注释
它对Config.groovy中的属性有一些引用,这些属性是通过执行以下操作拉入的:
...grailsApplication.config.myprop1.mysubprop1
在我的配置groovy中,它如下所示:
myprop1.mysubprop1 = true
但是,当我使用TypeChecked注释时,上面的行给了我编译错误:
[Static type checking] - No such property: enabled
我正在使用Grails2.3.6,并试图重定向一个URL以包含一个尾随的正斜杠,但保持URL的其余部分不变。原因是我有动态内容,其中包含图像和附件。我希望这些图像和附件显示为动态内容的子页面,例如:
http://example.com/content
将指向一段动态生成的内容,没有问题。但是,如果我想有一个附件,我将包含一个指向附件/file1.pdf的href链接。
问题是上面的例子会产生http://example.com/attachments/file1.pdf(请注意,/conte
我在过滤器中使用GSON型转换器,如下所示
def account = new Object(){
String firstName, lastName
};
if(springSecurityService.isLoggedIn()){
account.setFirstName(springSecurityService.principal.givenName);
account.setLastName(springSecurityService.principal.family
我正在写一个发送乌尔都语短信的控制器。当我开始在谷歌上搜索时,我发现前端使用JQuery的乌尔都语编辑器插件。但它也不起作用
使用JQuery的乌尔都语编辑器插件是否与grails兼容
对我完成任务还有什么建议吗 首先,什么是乌尔都语
乌尔都语
JQuery的乌尔都语编辑器插件提供了将网页上的任何编辑区域转换为乌尔都语编辑区域的功能。它可以在编辑区域内键入乌尔都语,而无需在操作系统中安装乌尔都语语言支持或乌尔都语键盘。这项工作源自乌尔都语网页,乌尔都语网页是一个javascript组件,它还提供
我很难将工作映射到一个对我来说是只读的遗留数据库,我有一个属于第三方的类客户机,第三方有一个客户机
这些表如下所示:
Client ThirdParty
--------------------- --------------------
third_party_rowid (key) rowid (key)
static mapping
我有以下几点
static constraints = {
items nullable: true , validator: { val, obj ->
if(val){
for(int i = 0; i < val.size(); i++){
BundleDefinitionCommand bdc = val[i]
def errors = []
val.eac
标签: Grails
gormgrails-2.0grails-domain-class
我刚从Grails(来自Rails)开始,我注意到Grails似乎并不喜欢域类中字段的范围修饰符
我知道域类中所有未定义范围的字段在默认情况下都是公共的,但如果您实际将其声明为公共的,Grails将不会验证它
class Person {
public String firstName
public String middleName
public String lastName
}
如果添加约束,Grails将在调用validate()时抛出NotReadableProperty
我有以下POJO/POGO:
class Person {
String firstName
String lastName
int age
// ... lots of other fields
}
和Grails2.3.6控制器:
class PeopleController {
List<Person> people = new ArrayList<Person>()
def populatePeople() {
标签: Grails
composite-keydetachedcriteriacreatecriteria
域设置
我有两个列表,用于填充该研究。
一个是站点当前关联资源的列表
另一个是可以关联到站点的可用资源列表。这些可用资源由活跃=真实和与研究在同一美国州内确定
我正试图写一个标准来让这个工作,但似乎无法得到它。我需要显示所有活跃的资源,与研究处于同一USState,并且当前未与站点关联。当前关联在第一个表中
return Resource.createCriteria().list(sort: params.sort, order: params.order, max: params.m
我试图在我的gsp页面上添加项目符号并显示列表
<ul>
<g:each in="${totalCount}" var="cl">
<g:each in="${cl}" var ="c">
<li>${c}</li>
</g:each>
</g:each>
</ul>
没有显示项目符号,只有列表以直线显示。没有显示
在域类上使用@Resource实现RESTful控制器时,是否可以进一步使用@Secured对域类进行注释,并期望结果控制器上的安全性受到影响
即:
谢谢:)这目前不受支持,但请随时按要求添加功能
@Resource
@Secured(['ROLE_MEMBER'])
class Book {
String name
}
我的Grails2.4.4中有以下域类。应用程序:
class Company {
String name
static constraints = { name blank: false, nullable: false }
}
当我在未指定名称的情况下提交表单时,会收到以下错误消息:
[
test.Company.name.nullable.error.test.Company.name,
test.Company.name.nullable.error.name,
test
我通过Grails中的Joda Time插件使用Joda Time来输入时间数据,但它的构造函数显示时间,比我所在的时区提前一个小时。构造函数中的强制时区设置,如下所示:
new LocalTime(DateTimeZone.forID("Europe/Moscow"))
没用
我听说了,它发生了什么,因为我有过时的时区数据,包含旧的dst规则。我必须将其更新到最新版本v2.8,这可能有助于对抗旧数据。如果我在Grails中使用最新的joda time插件,该插件于去年7月更新,该怎么做呢
d
我正试图根据在中找到的文档设置一个基于鉴别器的多租户系统
确定要使用系统的租户,并根据用户id显示数据
这是我的租户解决方案:
class MyTenantResolver implements AllTenantsResolver {
def springSecurityService
@Override
Iterable<Serializable> resolveTenantIds() {
return new DetachedCrit
|Grails版本:3.0.7
|Groovy版本:2.4.4
|JVM版本:1.8.0_60
我们有一个使用命令对象的控制器:
def search(SearchCommand command) {
}
命令对象处理数据绑定和表单验证。我的问题是,在非连续调用之间,建议采用什么方法保留命令对象中的数据
所讨论的命令对象包含大量复杂搜索中使用的参数,保留数据的原因是每次用户返回搜索表单时都要重新填充搜索表单(以后可能是任意数量的后续请求)
非常感谢您的推荐。
将命令对象放入会话中:
或者一
我有一个使用groovy代码中的Grails条件查询数据库的代码。
以下只是将where子句/条件添加到标准中的测试代码的一部分
for (Map.Entry<String, String> entry : searchMap.entrySet()) {
String name = entry.getKey();
String city = entry.getValue();
eq("user.name", name)
eq("user.city",
我有两节课
class A {
String name
static hasMany[b:B]
static mapping={
b joinTable:[name:'A_B', column: 'b_id', key: 'a_id']
}
}
class B {
String name
}
现在我应该加入表class B和A_B表,其中A_B存储这两个表
表id为。我写了这个问题
select b.name from B b,A_B
当我输入grails升级命令时,出现以下错误:
| Error Error occurred running Grails CLI: null (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
java.lang.NullPointerException
at org.grails.cli.GrailsCli.initializeProfile(GrailsCli.groovy:516)
at o
新创建的grails应用程序在src文件夹旁边包含grails应用程序文件夹。grailsapp文件夹包含grails应用程序的所有源
为什么此文件夹不在src文件夹中
它能移动吗?不,它不能也不应该移动。由于某种原因,src文件夹与grails app文件夹不同。grails-app文件夹包含传统的grails应用程序结构,其中assrc旨在包括其他Groovy和Java源代码,这些源代码并非故意属于grails应用程序的标准约定(例如TagLib、域类、控制器、服务、GSP、js/css资产
我有上面的代码。当我通过API调用发送post请求时,我得到一个异常“代理票证必须作为标头中的参数发送”。我不知道代码出了什么问题。有人能帮我吗?有不同的方法。这应该起作用:
Response response = new RestBuilder.post(finalUrl){
header: ["ticket", "getProxyTicket()",
"name", "abc",
"id", "1"
在Grails中,这可用于内容协商,尤其适用于实现API:
withFormat {
xml { ... some code that renders XML }
json { ... some code that renders JSON }
}
现在,如果我需要一种默认格式,比如JSON,“…呈现JSON的代码”应该执行两次,一次用于JSON选项,一次用于“*”选项,即“任何其他匹配格式”,这是一种指定默认格式的方法,如:
withFormat {
xml { ..