我有一个看起来像的域名
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中创建需要支持移动应用和网络应用的后端.我已设法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) 我在旧的Config.groovy中:
grails.gorm.default.mapping = {
id generator = 'identity'
// send only the dirty fields to the database for updating
dynamicUpdate = true
dynamicInsert = true
}
Run Code Online (Sandbox Code Playgroud)
所以我把它放在另外的application.groovy中,但它不会再被尊重了.所有更新都已满,将所有字段发送到数据库,甚至是未更改的字段.
我试着在application.yml中翻译它:
grails:
gorm:
default:
mapping:
id generator: "identity"
dynamicUpdate: true
dynamicInsert: true
Run Code Online (Sandbox Code Playgroud)
......但仍然没有运气.
toString我的枚举中有一个自定义方法:
enum TaxRate implements Serializable {
RATE23(23.0),
...
private String s
private BigDecimal rate
private TaxRate(BigDecimal s) {
this.s = s + "%"
this.rate = s * 0.01
}
public String toString() {
return s
}
Run Code Online (Sandbox Code Playgroud)
现在,当我以HTML显示费率时,我得到了很好的输出,如TAX:23.0%.
但是当用户从a中选择税<select>并且发送的值23.0%是因为Grails无法创建/获取TaxRate实例时会发生什么...
我应该覆盖什么才能支持这种自定义映射?试图覆盖valueOf(String)以错误结束..
如何将文件上传到服务器目录..如果我的项目在D:\ myapp和我运行cmd d:\ myapp grails run-app当我运行这个应用程序和其他计算机运行它并上传文件..将保存ini计算机目录D:\ myapp\upload?中的服务器?
我试试这个ini gsp.
<g:form action="list" enctype="multipart/form-data" useToken="true">
<span class="button">
<input type="file" name="filecsv"/>
<input type="button" class="upload" value="Upload"
onclick='location.href = "${createLink(url: [action: 'upload'])}"'/>
</span>
</g:form>
def upload = {
def f = request.getFile('filecsv')
if (f.empty) {
flash.message = 'file cannot be empty'
render(view: 'list')
return
}
f.transferTo(new File('C:\Users\meta\Documents\workspace-sts-2.5.2.RELEASE\wawet\wallet\uploads\file_name.csv'))
response.sendError(200, 'Done')
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
2014-02-03 10:43:02,706 [http-8080-2] ERROR errors.GrailsExceptionResolver - No signature of method: org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper.getFile() is applicable for argument types: (java.lang.String) values: [filecsv]
Possible solutions: getXML(), getAt(java.lang.String), getAt(java.lang.String), …Run Code Online (Sandbox Code Playgroud) 在Web请求对象中获取时区信息有一个新功能.请参阅http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/mvc.html#mvc-timezone中的 16.9.1部分
但是我无法解决我们如何从请求中获取时区信息或者我应该使用哪种方法来获取时区信息?
查看和关注源代码后,请访问https://github.com/spring-projects/spring-framework/blob/v4.0.7.RELEASE/spring-webmvc/src/main/java/org/springframework/web/servlet/ support/RequestContext.java#L242,我试图手动打印
println WebUtils.getSessionAttribute(request, SessionLocaleResolver.class.getName() + ".TIME_ZONE")
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
我在域模型中有两个类:
class Project {
String name
Integer fund
}
class Task {
String name
Integer weight
Project project
}
Run Code Online (Sandbox Code Playgroud)
如何使用Task.name =“ something”获得Project?
如果我需要Project.name =“ something”的Task,可以通过createAlias使用条件来完成,但是如何加入Task
c = Project.createCriteria()
criteriaRes = c.list {
}
Run Code Online (Sandbox Code Playgroud) 在我的申请人域类中,我有以下内容:
static hasMany = [recommendationFiles:ApplicantFile]
static mapping = {recommendationFiles joinTable: [name:"LETTER_FILES", key: "APPLICANT_ID", column: "LETTER_ID"]}
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作时:
def applicant = Applicant.findByENumber(session.user.eNumber)
def applicantFiles = applicant.recommendationFiles
println applicantFiles
applicantFiles.each {
applicant.removeFromRecommendationFiles(it)
}
applicant.save(flush:true)
Run Code Online (Sandbox Code Playgroud)
我认为这是一个对我没有意义的错误:
| Error 2015-04-08 10:41:59,570 [http-bio-8080-exec-10] ERROR errors.GrailsExceptionResolver - ConcurrentModificationException occurred when processi
ng request: [POST] /scholarshipsystem/specialized/index - parameters:
_action_reUpload: Re-Upload
Stacktrace follows:
Message: null
Line | Method
->> 793 | nextEntry in java.util.HashMap$HashIterator
- - - - - - - - - - - - - - - …Run Code Online (Sandbox Code Playgroud) 我正在使用Grails作为大学CSE课程的网络项目.我注意到这个项目的许多其他团队正在使用Bootstrap 4进行网页设计(我是使用Grails的唯一一组).我查看了Bootstrap 4,我真的很喜欢它的外观.我个人不喜欢Grails用标准HTML看的方式.我想知道是否有一种方法可以使用Grails的Bootstrap 4.例如,在标准HTML中我可以有一个按钮和表单,它们将数据提交给控制器,并且会发生一些操作,它似乎与Grails的工作方式不同.
有谁知道我是否可以将Bootstrap 4与Grails集成,如果可以,我怎么做呢?
我有一个数据库表TableA,它有一个列'theDate',数据库中的数据类型是DATE.
当我通过GORM将java.util.Date保存到'theDate'时,当我通过从TableA执行select*来查看表中的数据时,它似乎只保存日期值.
但是,当我运行如下查询时:
select * from TableA where theDate = :myDate
Run Code Online (Sandbox Code Playgroud)
没有找到结果,但是如果我运行的话;
select * from TableA where theDate <= :myDate
Run Code Online (Sandbox Code Playgroud)
我确实得到了结果.
所以就像时间是相关的.
我的问题是如何保存日期和查询完全忽略时间的日期,只是在确切的日期匹配?
谢谢.
注意:我也尝试过使用sql.Date和util.Calendar但没有成功.
grails ×10
grails-orm ×6
bootstrap-4 ×1
criteria ×1
database ×1
date ×1
enums ×1
grails-3.0 ×1
groovy ×1
spring-mvc ×1
timezone ×1