关注grails域类:
class MyClass {
Map myMap
}
Run Code Online (Sandbox Code Playgroud)
现在,对于myMap,grails会自动为地图中的元素创建一个新表.但是,如果我添加太长的元素(例如1024个字符),我会收到DB错误.
我可以以某种方式告诉grails使myMap表中的相应列足够大以允许更大的字符串,或者我是否必须在数据库中手动执行此操作?
我已经试过了
static constraints = {
myMap(maxSize:1024)
}
Run Code Online (Sandbox Code Playgroud)
哪个不起作用(正如预期的那样,因为maxSize应该引用Map的值而不是Map本身).
如果不是通过约束,也许有办法通过约束
static mapping { ... }
Run Code Online (Sandbox Code Playgroud)
?
database mapping grails hibernate-mapping grails-domain-class
在UrlMappings.groovy,我已设置,"500"(controller:'error', action:'error')以便使用我自己的错误控制器(和视图).
它通常有效,但是当我尝试篡改请求输入(提交1MB大小的参数)时,我得到了一个Tomcat生成的错误页面,其中包含HTTP状态500.
首先我认为这个错误只是由Tomcat生成的,因此grails无法对它做任何事情,但是Exception是一个org.springframework.web.util.NestedServletException(嵌套的Exception java.lang.StackOverflowError)并且org.codehaus.groovy.grails堆栈跟踪中有许多打包的类.
我认为显示此异常包括对潜在攻击者的堆栈跟踪是危险的,所以我如何配置grails以始终显示我自己的错误页面?或者只能在Tomcat中配置它?
在Grails GSP中,我想要一个toolTip本地化:
<a href="..." title="localizedMessage">
Run Code Online (Sandbox Code Playgroud)
由于toolTip是在属性标题中写的,所以我不能<g:message>在这里使用.实际上我已经有了本地化消息的服务,但是当我从GSP调用它时,服务的messageSource为null,所以让它工作也是一个解决方案.
我正在使用GSP发送基于MailService插件的电子邮件.sendMail关闭传递(以及其他)body(view:..., model:myModel)
我知道我只能${itemName}在GSP中使用myModel Map的每个项目.但是,由于我有时想动态地构建项目名称'item'+i,我需要有一些周围的方法来访问变量.
我已经尝试了${model.get('item'+i),${params.get('item'+i)但是,模型为null,params是一个空的Map.我也试过了pageScope,但是虽然我可以访问一个项目,但我${pageScope.itemName无法使用,${pageScope.get('item'+i)}因为pageScope不是Map.
可能有多种解决方案可以解决这个问题; 我很高兴一个简单的;-).我看到的一个解决方案是将myModel作为唯一参数传递,然后始终使用myModel.get(...),但这意味着我必须更改所有现有的GSP以始终引用myModel而不是直接访问项目(具有固定名称); 所以如果有一种方法我不必改变传递给GSP的模型,这将是我的最爱.
如果有人也可以在这种情况下对模型和参数的区别说几句话,那么这将是另外有用的!
我需要将嵌套List的String表示形式转换回Groovy/Java中的嵌套List(of Strings),例如
String myString = "[[one, two], [three, four]]"
List myList = isThereAnyMethodForThis(myString)
Run Code Online (Sandbox Code Playgroud)
我知道,有一个分裂的字符串用逗号比如Groovy的.split方法,我可以使用正则表达式来识别之间[和]嵌套列表,但我只是想知道,如果有一个现有的方法可以做到这一点,或者如果我必须自己编写这段代码.
我想最简单的事情是List构造函数,它将String表示作为参数,但我还没有找到这样的东西.
我有一个像这样的 bash 脚本
#!/bin/sh
firefox &
Run Code Online (Sandbox Code Playgroud)
Firefox 窗口打开,但没有焦点。我该怎么做才能让它自动获得焦点?
我可以使用一些 X 窗口工具/命令,但是如何获取 Firefox 的窗口 ID?窗口名称随着显示的 URL 发生变化,因此没有用。
编辑:我的窗口管理器是 Gnome。
我的grails Web应用程序当前将大量调试信息记录到文件中,几乎每个请求都会记录下来.
根据您的经验,我应该在将其转移到生产之前关闭它(这会使得更难以追踪错误),或者即使同时有很多用户,我的应用程序的性能几乎没有影响?