2011-09-29 3 views
0

안녕하세요, grails 1.3.7에서 jcaptcha 플러그인을 사용하려고 할 때 다음 오류가 발생합니다.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) 

동일한 포인터가 있으면 도움이됩니다. 미리 감사드립니다.

+0

JCaptcha를 통합하는 데 사용하는 (컨트롤러) 코드를 표시하면 도움이 될 것입니다. 위의 stacktrace에서 설정 파일에서 jcaptcha 자격 증명을 검색하려는 코드에 문제가있는 것 같습니다. –

답변

0

Grails와 함께 JCaptcha를 사용하는 경우 "captchas"를 정의해야합니다. 즉, 생성 된 Jcaptchas에 따라 규칙을 지정해야합니다.

귀하의 captcha가 귀하의 conf에 정의되어 있습니다/Config.groovy 파일 파일 : http://www.grails.org/JCaptcha+Plugin

1

@ "captcha1"와 같은 문자열이를 만드는 방법에 대한

jcaptchas { 
    captcha1 = … 
    captcha2 = … 
} 

상세 정보 (당신이 경우 그와 같은 Config.groovy에 captcha라는 이름이 붙은)는 사용할 captcha-instance를 식별하는 첫 번째 인수로 jcaptchaService.validateResponse가 필요합니다.

Config.groovy 파일 Exmpl : 뷰에 대한

... 
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을 사용했다.

관련 문제