嗨,当我尝试在grails 1.3.7中使用jcaptcha插件时,我遇到了以下错误。
org.codehaus.groovy.runtime.typehandling.GroovyCastException:
Cannot cast object '{}' with class 'groovy.util.ConfigObject' to class 'com.octo.captcha.service.CaptchaService' due to:
groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.octo.captcha.service.CaptchaService(groovy.util.ConfigObject)
at org.grails.plugin.jcaptcha.JcaptchaService.getCaptchaService(JcaptchaService.groovy:42)
at org.grails.plugin.jcaptcha.JcaptchaService$$FastClassByCGLIB$$98874858.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.grails.plugin.jcaptcha.JcaptchaService$$EnhancerByCGLIB$$468f85f9.getCaptchaService(<generated>)
at org.grails.plugin.jcaptcha.JcaptchaService$getCaptchaService.call(Unknown Source)
at org.grails.plugin.jcaptcha.JcaptchaController$_closure1.doCall(JcaptchaController.groovy:29)
at org.grails.plugin.jcaptcha.JcaptchaController$_closure1.doCall(JcaptchaController.groovy)
at java.lang.Thread.run(Thread.java:619)任何关于这方面的建议都会很有帮助。提前谢谢。
发布于 2011-11-29 06:16:39
像"captcha1“这样的字符串(如果您在Config.groovy中将验证码命名为这样)是jcaptchaService.validateResponse期望的第一个参数,用于标识要使用哪个验证码实例。
Config.groovy示例:
...
captchas {
captcha1 = new GenericManageableCaptchaService(...)
}
...对于视图,可以像这样使用验证码:
<jcaptcha:jpeg name="captcha1" /> ...
<g:textField name="user_typed_captcha" value="" />在控制器中是这样的:
if(jcaptchaService.validateResponse("captcha1", session.id, params.user_typed_captcha)) {
log.info("CAPTCHA WAS VALID!")
} else {
log.info("CAPTCHA WAS NOT VALID!")
}这应该可以在控制器中使用jcaptcha解决您的问题。
对我来说,在CommandObjects中使用jcaptchaService是行不通的。我认为原因是由于某些原因,验证方法被调用了两次,这使得捕获无效。我使用的是Grails 1.3.7。
发布于 2011-10-03 18:04:46
在Grails中使用JCaptcha时,您需要“定义验证码”:这意味着您必须指定生成Jcaptchas所依据的规则。
验证码在conf/Config.groovy文件中定义:
jcaptchas {
captcha1 = …
captcha2 = …
}有关如何创建这些@ http://www.grails.org/JCaptcha+Plugin的更多信息
https://stackoverflow.com/questions/7594612
复制相似问题