0

ログイン時に Javascript と JSP を使用してアラート プロンプトを実装しようとしていますが、成功することがわかりません。これまでのところ、私が持っているのは、プロンプトとして表示したいエラーメッセージだけです。助けてください。これは私が持っているものです:

サーブレット側:

String userValidate = logindao.authenticateUser(loginbean);
        if(userValidate.equals("SUCCESS")){
            request.setAttribute("userName", userName);
            request.getRequestDispatcher("/Home.jsp").forward(request, response);
        }else{
            request.setAttribute("errMessage", userValidate);
            request.getRequestDispatcher("/Login.jsp").forward(request, response);
        }

私のJSP側:

<td><%=(request.getAttribute("errMessage") == null)
                                    ? ""
                                    : request.getAttribute("errMessage")%></td>

私のDAO:

public class LoginDao {
    public String authenticateUser(LoginBean loginbean){
        String userName = loginbean.getUserName();
        String password = loginbean.getPassword();

        Connection conn = null;
        String userNameDB = "";
        String passwordDB = "";
        DBConnection db = new DBConnection();
        try{
            conn = db.getDbConnection();
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("SELECT USER_NAME, P_WORD, WORK_CLASS FROM USER_LOGIN "
                    + "where USER_NAME = '" + userName + "'");

            while(rs.next()){
                userNameDB = rs.getString("USER_NAME");
                passwordDB = rs.getString("P_WORD");
            }
            if(userName.equalsIgnoreCase(userNameDB)&& password.equalsIgnoreCase(passwordDB)){
                return "SUCCESS";
            }
            if(userName.equals("") || password.equals("")){
                return "Username or Password is blank";
            }
        }catch(Exception asd){
            System.out.println(asd);
        }
        return "invalid user credentials";
    }
}

資格情報が間違っている場合、ページに印刷されたエラー メッセージが表示されます。

4

1 に答える 1

2

JSP に以下を追加します。

<c:if test="${not empty errMessage}">
    <script>alert("${errMessage}");</script>
</c:if>

JSP でのスクリプトレットの使用は推奨されていないため、EL を使用しました。この構文は、 attrという名前の属性の値をtest としてpagerequestsession、またはapplicationスコープのいずれかからこの順序で${attr}単純にプルします。

編集:(デバッグ)

<p>errMessage is: '<%= request.getAttribute("errMessage") %>'</p>
<c:if test="${not empty errMessage}">
    <script>alert("${errMessage}");</script>
</c:if>
<% request.setAttribute("errMessage", "forced error message"); %>
<c:if test="${not empty errMessage}">
    <script>alert("${errMessage}");</script>
</c:if>
于 2013-07-06T03:47:00.073 に答える