我已经获得了最新的Grails 2.0里程碑,我看到该ConfigurationHolder
课程的弃用警告:
org.codehaus.groovy.grails.commons.ConfigurationHolder
Run Code Online (Sandbox Code Playgroud)
弃用消息只是简单地说"使用依赖注入",这对我没有多大帮助.我理解依赖注入,但是如何使用正确的Grails配置连接bean,以便我可以在运行时访问它?我需要从我的控制器和标签以外的地方访问配置(例如BootStrap
).
我想知道什么是让Grails应用程序提供可以由Web服务使用的RESTful API(主要是一些CRUD操作)的最佳方法,例如当您想要为基于浏览器的应用程序构建相应的iOS应用程序时还要别的吗.
我想在我的Grails应用程序中构建一个单独的部分,它接受调用,www.mywebapp.com/api/someAction
以便我可以重用Service层.那我怎么做URL映射呢?只有一个大ApiController
不听起来非常时髦.
或者有没有更好的方法我不知道?此方法必须支持OAuth之类的功能,以对正在调用Web服务的用户进行身份验证.
我有一个Grails服务,它通过执行HTTP调用使用第三方服务发送电子邮件:
class EmailService {
def sendEmail(values) {
def valueJson = values as JSON
... // does HTTP call to 3rd party service
}
}
Run Code Online (Sandbox Code Playgroud)
我编写了一个单元测试来测试这个服务(因为集成测试会旋转Hibernate和整个域框架,我不需要):
@TestFor(EmailService)
class EmailServiceTests {
void testEmailServiceWorks() {
def values = [test: 'test', test2: 'test2']
service.sendEmail(values)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我执行此单元测试时,它在尝试进行as JSON
转换时失败并出现此异常:
org.apache.commons.lang.UnhandledException:org.codehaus.groovy.grails.web.converters.exceptions.ConverterException:类的Unconvertable对象:java.util.LinkedHashMap
然后,我重新编写了单元测试,以便执行以下操作:
void testEmailServiceWorks() {
def value = [test: 'test', test2: 'test2']
def valueJson = value as JSON
}
Run Code Online (Sandbox Code Playgroud)
当我尝试进行as JSON
转换时,我得到了同样的异常.
有谁知道为什么我得到这个例外,我怎么能解决它?
我觉得我现在缺少一些简单的东西.我在运行IntelliJ 10时从1.3.7升级到grails 2.1.1,最近我升级到IntelliJ 12并导入了所有设置.不知何故,在IntelliJ 12的项目中,我没有grails SDK.
我的全球图书馆拥有所有正确的.jar文件中定义的Grails 2.1.1包括在内,但是,在工具菜单中缺少了"Grails的"子菜单,并试图运行应用程序给出的Grails SDK没有配置错误消息.
如果我为grails创建一个新项目,SDK会正确配置,Grails会在"工具"菜单中显示.我错过了什么阻止我将Grails SDK添加到此项目中?感谢社区,您的时间和建议.
我正在使用eclipse kepler
并在关闭计算机并再次打开它后,我收到此错误消息:
grails run-app --stacktrace
|Loading Grails 2.3.4
|Configuring classpath
.
|Environment set to development
.Error
|
Error executing script RunApp: _GrailsClasspath_groovy$_run_closure1 (NOTE: Stac
k trace has been filtered. Use --verbose to see entire trace.)
java.lang.NoClassDefFoundError: _GrailsClasspath_groovy$_run_closure1
at _GrailsClasspath_groovy.run(_GrailsClasspath_groovy:39)
at _GrailsClasspath_groovy$run.call(Unknown Source)
at _GrailsEvents_groovy$run.call(Unknown Source)
at org.codehaus.gant.IncludeTargets.leftShift(IncludeTargets.groovy:59)
at org.codehaus.gant.IncludeTargets$leftShift.call(Unknown Source)
at _GrailsEvents_groovy.run(_GrailsEvents_groovy:32)
at _GrailsEvents_groovy$run.call(Unknown Source)
at _GrailsClean_groovy$run.call(Unknown Source)
at org.codehaus.gant.IncludeTargets.leftShift(IncludeTargets.groovy:59)
at org.codehaus.gant.IncludeTargets$leftShift.call(Unknown Source)
at _GrailsClean_groovy.run(_GrailsClean_groovy:29)
at _GrailsClean_groovy$run.call(Unknown Source)
at _GrailsWar_groovy$run.call(Unknown Source)
at org.codehaus.gant.IncludeTargets.leftShift(IncludeTargets.groovy:59)
at org.codehaus.gant.IncludeTargets$leftShift.call(Unknown Source)
at _GrailsWar_groovy.run(_GrailsWar_groovy:27) …
Run Code Online (Sandbox Code Playgroud) 我有一个使用的Grails 2.0.0项目grails create-app
.在我的HTML和GSP文件中,我试图包含jquery.js
.我没有成功地尝试了以下所有方法:
<script type="text/javascript" src="jquery/jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery/jquery.js"></script>
<g:javascript library="jquery"/>
Run Code Online (Sandbox Code Playgroud)
前两个<script>
标签导致404 Not Found(使用Firebug验证).的<g:javascript>
在无标签结果被包括(认证使用视图源).
在我的Grails应用程序的主页上,它表明安装了jquery 1.7.1(在"INSTALLED PLUGINS"下).
Grails中包含jquery .js文件的正确方法是什么?
后续: .GSP文件:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Test</title>
<g:javascript library="jquery/jquery"/>
</head>
<body>
<h1>Test</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
以下HTML源代码中的结果:
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Test</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
请注意,缺少jquery.js.
后续行动2:
我使用grails create-app
以下方法创建我的应用:
13:56:40 ~/grailsDev $ grails create-app helloworld
| Created Grails Application at /Users/steve/grailsDev/helloworld
13:56:57 ~/grailsDev $ cd helloworld/
13:57:06 ~/grailsDev/helloworld $ ls -al …
Run Code Online (Sandbox Code Playgroud) Grails 2.0改变了它使用grails.serverURL进行开发和测试环境的方式(如手册中所述).但是,关于Tomcat上的生产部署,我在serverURL上遇到了一些问题.serverURL似乎有几个选项(生产模式):
(已添加)此设置只是"冒烟和镜像",因为Tomcat和Jetty具有控制应用程序URL处理方式的方法,直至"应用程序"级别.
用它来指定服务器(在Config.groovy中指出为"TODO")
不要用它作为显示在这里通过Grails的贡献者之一,即"它应该永远是安全移除的serverURL财产,并让Grails的生成相对于当前正在运行的应用程序的URL." 目前尚不清楚这是否延伸到生产(不生成电子邮件时).
你能否为Jetty和Tomcat(生产模式)澄清serverURL和app.context的正确用法?
谢谢
在Grails中,有一个变体如何从源代码中包含本地插件.根据文档,可以输入BuildConfig.groovy
:
// Useful to test plugins you are developing.
grails.plugin.location.shiro =
"/home/dilbert/dev/plugins/grails-shiro"
// Useful for modular applications where all plugins and
// applications are in the same directory.
grails.plugin.location.'grails-ui' = "../grails-grails-ui"
Run Code Online (Sandbox Code Playgroud)
问题是它在Grails 2.0.RC1中不起作用.我已经尝试过grails clean
,安装插件grails install-plugin
并将其放置BuildConfig.groovy
.仍然无法解决.
Grails 2.0似乎有一些变化DataSource.groovy
,我似乎无法像在1.3.7中那样运行mysql
我做的grails install-dependency mysql:mysql-connector-java:5.1.16
不仅仅是在lib中转储.jar.我听说这是现在这样做的方法.
以下是我在我的内容中所取代的内容DataSource.groovy
:
driverClassName = "org.h2.Driver"
...
url = "jdbc:h2:mem:devDb;MVCC=TRUE"
Run Code Online (Sandbox Code Playgroud)
同
driverClassName = "com.mysql.jdbc.Driver"
...
url = "jdbc:mysql://localhost:3306/${dbNamer}?autoreconnect=true"
Run Code Online (Sandbox Code Playgroud)
当然将用户名,密码和dbNamer更改为有效条目...我做错了什么?是否有一个grails 2.0教程,涵盖了设置mysql?
我得到这个怪物错误:
| Loading Grails 2.0.0
| Configuring classpath.
| Environment set to development.....
| Packaging Grails application.....
| Compiling 1 source files.....
| Running Grails application
| Error 2012-01-16 21:39:10,134 [Thread-9] ERROR context.GrailsContextLoader - Error executing bootstraps: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: …
Run Code Online (Sandbox Code Playgroud) 用于验证的Grails 2.0.4文档向您展示了如何在页面顶部显示错误消息以及如何在字段无效时如何向元素添加css类,但它不会告诉您如何显示错误消息在字段本身旁边,这样的事情:
-----------------------
Name: | | You must enter a name!
-----------------------
Run Code Online (Sandbox Code Playgroud)
如何检索无效字段的特定错误消息,然后将其显示在字段旁边?
grails-2.0 ×10
grails ×9
groovy ×2
api ×1
datasource ×1
eclipse ×1
grails-orm ×1
jquery ×1
json ×1
mysql ×1
rest ×1
validation ×1
web-services ×1