我正在尝试在我的Groovy/Grails应用程序中混合使用一个类,并且我正在使用文档中定义的语法,但我一直收到错误.
我有一个看起来像这样的域类:
class Person {
mixin(ImagesMixin)
// ...
}
Run Code Online (Sandbox Code Playgroud)
编译很好,但由于某种原因,它将无法正常工作.包含ImagesMixin的文件位于我的/src/groovy/
目录中.
我试过使用Groovy版本1.5.7和1.6-RC1没有任何运气.有谁知道我做错了什么?
堆栈跟踪:
2008-12-30 17:58:25.258::WARN: Failed startup of context org.mortbay.jetty.webapp.WebAppContext@562791{/FinalTransmission,/home/kuccello/Development/workspaces/lifeforce/FinalTransmission/web-app}
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError
at java.security.AccessController.doPrivileged(Native Method)
at RunApp_groovy$_run_closure2_closure7.doCall(RunApp_groovy:67)
at RunApp_groovy$_run_closure2_closure7.doCall(RunApp_groovy)
at Init_groovy$_run_closure6.doCall(Init_groovy:131)
at RunApp_groovy$_run_closure2.doCall(RunApp_groovy:66)
at RunApp_groovy$_run_closure2.doCall(RunApp_groovy)
at RunApp_groovy$_run_closure1.doCall(RunApp_groovy:57)
at RunApp_groovy$_run_closure1.doCall(RunApp_groovy)
at gant.Gant.dispatch(Gant.groovy:271)
at gant.Gant.this$2$dispatch(Gant.groovy)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.processTargets(Gant.groovy:436)
at gant.Gant.processArgs(Gant.groovy:372)
Caused by: java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at …
Run Code Online (Sandbox Code Playgroud) 在Grails中,有两个地方可以定义JavaScript函数,直接在GSP上的元素中,以及在/ web-app/js下的单独的javascript源文件中(例如,application.js).我们在application.js中定义了一个常用的javascript函数,但是我们还需要能够使用groovy代码动态生成函数的一部分.不幸的是,$ {some groovy code}似乎没有在单独的javascript源文件中处理.
是通过在GSP页面上的脚本标记中定义javascript函数来实现此目的的唯一方法,还是有更通用的解决方案?显然,我们可以在模板GSP文件中的脚本标签中定义javascript函数,该文件将被重用,但是有很多推动将我们的javascript函数一起定义在一个地方(即外部javascript源文件).这也有性能优势(javascript源文件通常只是由每个客户端的浏览器下载一次,而不是在他们访问的每个html页面的源代码中重新加载相同的javascript函数).我已经玩弄了将功能分解为静态和动态部分的想法,将静态部分放在外部源中并将动态部分放入模板GSP中,然后将它们粘合在一起,
有任何想法吗?
(编辑:听起来像是动态生成JavaScript函数的一部分,然后下载一次并被客户端一遍又一遍地使用,这可能是一个坏主意.但是,"动态"的部分只会改变也许每周或每月一次,然后只是非常轻微.大多数情况下,我们只想要从数据库中生成这一部分,即使只有一次,而不是硬编码.)
我在Web表单上使用了一堆不同的asp.net验证控件.其中一些将其Text属性设置为"*Error"或"您错过了这些字段"之类的内容.
但是,一些CustomValidator控件具有空白的Text属性.我故意将它们留空,因为我根据哪种情况失败动态添加ErrorMessage.(CustomValidator可能有许多不同的条件,我设置args.IsValid = false)
发生错误时,我设置的ErrorMessage属性将显示在ValidationSummary和Validator控件内.我不希望这样.我希望能够在ValidationSummary中显示ErrorMessage,而不是在BaseValidator.Text属性中显示.
我的第一次尝试是将Text属性设置为空格"".那没用.
我实现的(现在)是一个显示为背景颜色相同的时期.这是一个黑客 - 我不喜欢它.哎呀,也许这就是我在这里的原因!
这是代码:
<asp:CustomValidator ID="StackOverflowValidator" runat="server"
Text="."
CssClass="validatorstyle"
Display="Dynamic"
OnServerValidate="validate_AllowedToDoSomething"
ValidationGroup="MainGroup" />
<asp:ValidationSummary ID="mainGroupValidationSummary" runat="server"
ValidationGroup="MainGroup"
DisplayMode="BulletList"
HeaderText="There was an error in saving. Please check the following:" />
Run Code Online (Sandbox Code Playgroud)
在validate_AllowedToDoSomething里面我打电话:
StackOverflowValidator.ErrorMessage = "Custom Error Message #1";
args.IsValid = false;
return;
Run Code Online (Sandbox Code Playgroud)
我得到的是"自定义错误消息#1" 两次在Web表单上.提前致谢!
在CSS的现代时代,我如何创建一对面板(例如,Outlook中的预览窗口,或主/详细视图)?理想情况下顶部(主)窗格将获得滚动条等?
预期的用例是,用户可以在顶部窗口中滚动,同时始终能够看到预览/详细信息窗口(我打算通过jQuery将所选行的数据加载到底部面板中).
在旧世界(表格布局)中,我可能有类似的东西:
<html>
<body>
<table height="100%" border="1" width="100%">
<tr height="*"><td>master</td></tr>
<tr height="100"><td>detail</td></tr>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
那么这如何转化为CSS呢?(特别是,在两个窗口上获取滚动条).
我有5个参数,我想将它们发送到方法:
public static SqlCommand getCommand(string procedure, SqlParameter[] parameter)
{
Sqlcommand cmd;
return cmd
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样一次发送这些参数吗?
SqlParameterCollection prm;
prm.Add(p1);
prm.Add(p2);
prm.Add(p3);
prm.Add(p4);
prm.Add(p5);
sqlcommand cmd = getCommand(prm);
Run Code Online (Sandbox Code Playgroud) 以下是将pfx添加到Cert存储的代码.
X509Store store = new X509Store( StoreName.My, StoreLocation.LocalMachine );
store.Open( OpenFlags.ReadWrite );
X509Certificate2 cert = new X509Certificate2( "test.pfx", "password" );
store.Add( cert );
store.Close();
Run Code Online (Sandbox Code Playgroud)
但是,我找不到为NetworkService设置访问私钥的权限的方法.
任何人都能解释一下吗?提前致谢.
我正在开始使用PHP开发一个新项目,我很乐意从其他开发人员那里获得有关他们首选的PHP部署策略的反馈.我希望自动化一些事情,以便一旦提交更改,就可以将它们快速迁移到开发或生产服务器.
我有使用Capistrano和Ruby进行部署的经验以及一些基本的shell脚本.
在我第一次独自潜水之前,听听其他人在他们的项目中如何处理这个问题会很棒.
目前,开发人员处理站点的本地安装并将更改提交到subversion存储库.通过从svn导出标记版本并将其上载到服务器来进行初始部署.
通常通过手动上载更改的文件来进行其他更改.
许多开发人员认为测试私有方法是个坏主意.但是,我发现的所有示例都基于私有方法是私有的,因为调用它们可能会破坏内部对象的状态.但这不仅是隐藏方法的理由.
我们来看看Facade模式.我的班级用户需要2种公共方法.它们太大了.在我的示例中,他们需要从数据库的BLOB加载一些复杂的结构,解析它,填充一些临时COM对象,运行用户的宏来验证和修改这些对象,以及将修改后的对象序列化为XML.单个metod的相当大的功能:-)这两个公共方法都需要这些操作.所以,我创建了大约10个私有方法,并且有2个公共方法可以调用它们.实际上,我的私人方法不一定是私人的; 他们不会破坏实例的内部状态.但是,当我不习惯测试私有方法时,我有以下问题:
当我测试私有方法时:
有人可以形容,我做错了什么?我应该使用什么样的设计来获得相同的奖金,而不是测试私人方法?
更新:在我看来,我已经提取了我能够进行的其他课程.所以,我无法想象我还能提取什么.从数据库加载由ORM层执行,解析流,序列化为XML,运行宏 - 一切都由独立类完成.该类包含非常复杂的数据结构,搜索和转换的例程,以及对所有提到的实用程序的调用.所以,我不认为可以提取其他东西; 否则,它的责任(关于数据结构的知识)将在类之间划分.
所以,我现在看到的最好的解决方法是分成两个对象(Facade本身和真实对象,私有方法变为公共)并将真实对象移动到某个地方,没人会试图找到它.在我的情况下(Delphi)它将是一个独立的单元,在其他语言中它可以是一个单独的名称空间.其他类似的选项是2个接口,感谢您的想法.
我有一个中等大小的MySQL数据库,带有一个主要的"人员"表,其中包含有关连接到剧院和剧院学校的每个人的基本联系信息,我负责维护和开发许多Web应用程序.
有些人只是联系人 - 也就是说,他们的"人"表记录是我们需要存储的所有信息.许多其他人必须能够为各种系统承担不同的角色.其中,大部分都是以学生身份开始的.一些人从员工开始.作为学生的人可以成为实习生或表演者; 员工可以成为学生; 所有教师都是员工和表演者等.
从本质上讲,它们是各种不同的"帽子",任何个人可能必须佩戴这些"帽子"才能访问系统的不同部分并与之交互,并且在我们网站的公共页面上提供有关它们的信息.
我实现这个模型的选择是有几个表代表这些"帽子"的表 - 包含元信息的表,以补充基本的"人"信息,所有这些都使用"人物"id作为他们的主键.例如,作为教师的人在教师表中具有包含他或她的简短传记信息和工资率的记录.所有教师也是员工(但并非所有员工都是教师),这意味着他们在员工表中有一个记录,允许他们将工作时间提交到我们的工资单系统中.
我的问题是,实施模型有什么缺点?我能想到的唯一另一个选择是为人员表填充对于大多数条目都是空的和无用的字段,然后有一个人们可以归属的"组"的繁琐表格,然后几乎每个表都有系统有一个人person_id
外键然后依赖业务逻辑来验证引用的person_id属于适当的组; 但那是愚蠢的,不是吗?
下面是一些示例表声明,希望能够展示我目前如何将所有这些结合在一起,并希望说明为什么我认为这是一种更合理的方式来模拟系统必须处理的各种情况的现实.
欢迎提出任何建议和意见.我很感激你的时间.
编辑一些受访者提到使用ACL进行安全性 - 我在原始问题中没有提到我实际上使用单独的ACL包来为不同系统的实际用户进行细粒度访问控制.我的问题更多的是关于在数据库模式中存储有关人员的元数据的最佳实践.
CREATE TABLE persons (
`id` int(11) NOT NULL auto_increment,
`firstName` varchar(50) NOT NULL,
`middleName` varchar(50) NOT NULL default '',
`lastName` varchar(75) NOT NULL,
`email` varchar(100) NOT NULL default '',
`address` varchar(255) NOT NULL default '',
`address2` varchar(255) NOT NULL default '',
`city` varchar(75) NOT NULL default '',
`state` varchar(75) NOT NULL default '',
`zip` varchar(10) NOT NULL default '',
`country` …
Run Code Online (Sandbox Code Playgroud) 我有一个本地服务器,需要更改虚拟主机apache配置文件,然后重新启动apache,以便新配置生效.
PHP可以这样做吗?我试过passthru和exec,但他们没有工作.也许问题是我正在尝试重启PHP的父进程?
谢谢你的帮助!!
c# ×3
.net ×2
grails ×2
groovy ×2
php ×2
sql ×2
apache ×1
asp.net ×1
capistrano ×1
css ×1
deployment ×1
html ×1
javascript ×1
mixins ×1
parameters ×1
roles ×1
ssl ×1
tdd ×1
unit-testing ×1
validation ×1
vb.net ×1