2011-03-07 14 views
1

私はこのページのチュートリアルに従います。http://javahunter.wordpress.com/2010/09/25/integrating-captcha-in-jsf-2-0/ JSF 2.0で作成されたユーザー登録フォームにキャプチャを統合するには問題があります。これは私がこれまでにやっていることです:Captchaを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(ソースは上記のリンクで見つけることができます)は私のプロジェクト内のotherというパッケージに追加したサーブレットです

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 \ other \ MyCaptcha.javaの私のプロジェクトにあります。どうすればクラスパスに追加できますか? – sfrj

答えて

1

サーブレットがクラスパスにありません。このコメント

あたりのように、それはCで私のプロジェクトである:\ jee6workspace \ BBS \ SRC \その他\ MyCaptcha.java

あなたはIDEを使用しているように見えます。プロジェクトを再ビルドし、プロジェクトをサーバーに再発行し、サーバーを再始動します。また、サーバーのdeployフォルダーをチェックして、サーブレットがコンパイルされ、BBS/WEB-INF/classes/other/MyCaptcha.classファイルとして存在することを確認します。

まだこの問題がある場合、サーブレットの構築/初期化に失敗しました(キャッチされない例外がスローされました)。詳細についてはサーバーログを読み、それに応じて根本原因を修正してください。

+0

私はサーバを再起動し、再度ビルドして問題を修正しました:) tnx。私は自分のプロジェクトにサーブレットを追加するときにそれをしなければならないことを知りませんでした。 – sfrj

0

おそらく、あなたはcaptchaコンポーネントを含むPrimefaces jsfコンポーネントライブラリを試すことができます。使い方は簡単です(あなたのページに入れるだけです)。

www.primefaces.org

関連する問題