2011-03-07 55 views
1

整合驗證碼我的教程,我在http://javahunter.wordpress.com/2010/09/25/integrating-captcha-in-jsf-2-0/本頁面發現一個驗證碼集成到JSF 2.0中做了我的用戶註冊表單以下,但我有一些問題,也許有人能幫助我。這是我迄今所做的:問題在JSF 2.0頁

JSF頁面:

<h:graphicImage id="capimg" value="#{facesContext.externalContext.requestContextPath}/../Captcha.jpg"/> 
    <h:inputText id="captchaUserInput" value="#{registrationController.captchaUserInput}"/> 
<br /> 
    <h:commandButton value="Register" 
     action="#{registrationController.doRegisterBuyer}"> 
    </h:commandButton> 

管理bean:

@ManagedBean 
@RequestScoped 
public class RegistrationController { 
... 
private String captchaUserInput; 
... 

public String doRegisterBuyer() throws Exception { 
...<code for setting the values of the user> 
HttpServletRequest request = (HttpServletRequest) FacesContext 
      .getCurrentInstance().getExternalContext().getRequest(); 
    Boolean isResponseCorrect = Boolean.FALSE; 
    javax.servlet.http.HttpSession session = request.getSession(); 
    String parm = captchaUserInput; 
    String c = (String) session.getAttribute(MyCaptcha.CAPTCHA_KEY); 
    if (parm.equals(c)) { 

     buyersRegistratorEJB.createBuyer(buyer); 

    } else { 

     return "failed"; 
    } 

    return "registrationSucceded.xhtml"; 
} 

類MyCaptcha.java(來源可以在上面的鏈接中找到)是一個servlet,我添加到一個叫做其他項目的包中

web.xml配置:

<servlet> 
    <servlet-name>Captcha</servlet-name> 
    <servlet-class>other.MyCaptcha</servlet-class> 
    <init-param> 
     <description>passing height</description> 
     <param-name>height</param-name> 
     <param-value>30</param-value> 
    </init-param> 
    <init-param> 
     <description>passing height</description> 
     <param-name>width</param-name> 
     <param-value>120</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Captcha</servlet-name> 
    <url-pattern>/Captcha.jpg</url-pattern> 
</servlet-mapping> 

我覺得這裏是問題的一部分,因爲當我瀏覽到我的註冊頁面我看到這個控制檯:

WARNING: StandardWrapperValve[Captcha]: PWC1382: Allocate exception for servlet Captcha 
java.lang.ClassNotFoundException: other.MyCaptcha 

我覺得我不能正確地貫徹這種情況的原因之一是因爲路徑到web.xml中的MyCaptcha.java是不正確的。我怎麼能解決這個問題?另外我想提及,我不想添加更改圖像選項,只有圖像對我來說很好。

+0

'other.MyCaptcha'位於何處?它在類路徑上嗎? – Thomas

+0

這是我的項目,在C:\ jee6workspace \ BBS的\ src \其他\ MyCaptcha.java我怎樣才能將其添加到類路徑? – sfrj

回答

1

該servlet中缺少類路徑。按照此評論

這是我的項目,在C:\ jee6workspace \ BBS的\ src \其他\ MyCaptcha.java

你似乎使用IDE。重建您的項目,重新發布項目到服務器,重新啓動服務器。同時檢查服務器部署文件夾,並確保該servlet已編譯並以BBS/WEB-INF/classes/other/MyCaptcha.class文件形式呈現。

如果是,你仍然有這個問題,那麼這個servlet的建設/初始化失敗(拋出了未捕獲的異常)。閱讀服務器日誌以獲取詳細信息並相應地修復根本原因。

+0

我重新啓動了服務器並重新構建並解決了問題:) tnx。我不知道在我的項目中添加servlet時必須這樣做。 – sfrj

0

也許你可以只嘗試Primefaces JSF組件庫,其中包括一個驗證碼的組成部分。這很容易使用(只需放入你的頁面)。

www.primefaces.org