■質問日: |
2007/02/07 |
■最終更新日: |
2007/02/07 |
■質問内容: |
ログイン時にエラーが発生した場合に、ログインのHtmlForm内で this.setJavaServerPageFileName("loginerror.jsp"); というようにし、エラーページを表示しています。 このようにすると、一度エラーページを表示した後は、 通常のログインページが表示されません。 |
■回答内容: |
通常のログインページに戻す処理がないために、エラーページのままになっていると 考えられます。 ServletBase継承クラスの doBeforeCreateSession()メソッドをオーバーライドして ログイン用のHtmlFormのJSPを元に戻す処理を追加してください。 サンプル「見積もり毎度」の場合の例を添付資料に示します。 |
■添付資料: |
protected boolean doBeforeCreateSession(HttpServletRequest request, HttpServletResponse response) { try { //リクエストがログインHtmlフォームから送信されたものか否かを判定。 if (fLogin.getFormID().equals(request.getParameter(Html.COM_INFO_FORM_ID))) { //ログインフォームのexecuteを呼び出しユーザー認証を行う。 fLogin.execute(this.convertParamNamesToVector(request), this.convertParamValuesToHash(request)); //エラーがなかったらセッション開始OK if (fLogin.getErrorTable().size()==0 && fLogin.getNormalTable().size()==0) { return true; } } else if (request.getParameter(Html.COM_INFO_FORM_ID)!=null) { fLogin.addNormalMessage("*** サーバーとの接続が切断されました。再度ログインしてください。***"); //==================== Added ====================>>> } else { // ログイン用のHtmlFormのJSPを元に戻す。 fLogin.setJavaServerPageFileName("login.jsp"); //==================== Added ====================<<< } fLogin.setFormAction(request.getContextPath() + request.getServletPath()); fLogin.setJavaServerPageURL(getProperties().getString(ServletProperty.JAVA_SERVERPAGE_URL)); this.printForm(request, response, fLogin); } catch (Exception x) { this.handleException(request, response, x); } finally { fLogin.clearNormalMessage(); fLogin.clearErrorMessage(); fLogin.rsCheckUser.getParamSet().clearValues(); } return false; } |