Galera, estou utilizando o jcaptcha em um projeto com struts e preciso limitar os caracteres que aparecerão na imagem, a imagem default possui 7 letras, gostaria que mostrasse apenas 4 e de preferência números, na documentação existe um xml de configuração(ImageCaptchaFactories), que aparentemente faz isso. Porém este é utilizado no framework Spring, alguém sabe me dizer se existe algo do tipo para o Struts ou caso não exista como devo fazê-lo no Java mesmo.
Obrigado.
Galera! Resolvi o problema. Para utilizar o jcaptcha no struts, deve-se mapear uma classe Plugin no strtus config, além do mapeamento da action de geração imagem. Esse plugin é responsável por inicializar o serviço do captcha, isso acontece no momento de subir a aplicação. Ao fazer a alteração dos caracteres, faz-se necessário pegar um outro serviço pois, caso contrário a validação dos caracteres de imagem não enxrgará as alterações, por isso ao iniciar o plugin do captha deve-se também definir um mapeamento para a classe que fará as alterações de caracteres, como tipo, quantidade de letras, fundo, largura e altura, etc. segue um exemplo abaixo.
barbecue-1.5
<!-- Struts-config Inicio -->
<action path="/jcaptcha" type="com.octo.captcha.module.struts.image.RenderImageCaptchaAction"></action>
<!-- ========== Tiles plugin =================== -->
<plug-in className="com.octo.captcha.module.struts.CaptchaServicePlugin">
<set-property property="serviceClass" value="com.itau.boletos.captcha.PortalBoletoImageService" />
</plug-in>
<!-- Struts-config Fim -->
<!--- PortalBoletoImageService.java Inicio-->
//será mostrado penas número com tamanho de quatro carateres, tamanho fixo, com fundo fixo.
public class PortalBoletoImageService extends DefaultManageableImageCaptchaService {
public PortalBoletoImageService(){
CaptchaModuleConfig.getInstance().setMessageValue("Por favor tente novamente");
super.engine = new GenericCaptchaEngine(
new CaptchaFactory[] {
new GimpyFactory(
new RandomWordGenerator(
"1234567890"
),
new ComposedWordToImage(
new RandomFontGenerator(
new Integer(20), // min font size
new Integer(20), // max font size
new Font[]{ new Font("Arial", 0, 11)}
),
new FunkyBackgroundGenerator(
new Integer(120), // width
new Integer(60), // height
new SingleColorGenerator(new Color(150, 200, 255))
),
new RandomTextPaster(
new Integer(4), // minimal length of text
new Integer(4), // maximal length of text
new Color(0, 0, 0)
)
)
)
}
);
}
<!-- PortalBoletoImageService.java - fim -->
A versão mínima do struts é a 1.1.
Foi difícil achar material na net então espero que seja util para o próximo.
Obrigado.
Luxxem.
Boa tarde Eduardo;
Cara estou tentando usar o Jcaptcha na minha aplicação, mas estou tendo o seguinte problema.
Qdo executo a pagina que vai carregar a imagem ela não aparece.
Será que tem como você postar um passo a passo da sua implementação do jcaptcha aqui para que eu possa tomar como referencia e fazer igual???
Se houver como ficarei imensamente grato.
Alguém tem um exemplo completo de como fazer no Struts?