-1

这来自我的以下问题,在同一页面上显示错误消息与 JSP 中的会话?

我无法在同一页上显示消息,它只是回到同一页面但没有消息,

这是我的代码,

if (btn.equals("Sign Up")) {
        if (pass.equals(confirmPass) && length > 6) {

        String message = "You are Validated!";

        HttpSession session = request.getSession(true);
        session.setAttribute("message", message);           
        RequestDispatcher rd = request.getRequestDispatcher("signUp.jsp");
        rd.forward(request, response);
        out.println(session.getAttribute("message"));

    }

我的代码可能有什么问题?

这是我的jsp,

<div align="center">
        <form action="Validate" method="POST">
            <table>
                <tr>
                    <td>Enter Email</td>
                    <td><input type="text" name="txtEmail"></td>
                </tr>
                <tr>
                    <td>Select Password</td>
                    <td><input type="text" name="txtPassword"></td>
                </tr>
                <tr>
                    <td>Confirm Password</td>
                    <td><input type="text" name="txtConfirm"></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" name="submit" value="Sign Up"></td>
                </tr>

            </table>
        </form>
    </div>
4

3 回答 3

0

在您的 JSP 页面上,使用以下命令:

<c:out value="${sessionScope.message}" />
于 2013-02-20T00:54:56.430 回答
0

我认为您对jsp/servlethttpsession并不是很清楚。只要未填充会话属性,就不会在注册之前显示该消息。由于您将消息保存在 HttpSession 中,因此您需要确保在验证通过时删除属性。如果您不删除它,则在用户首次注册失败后将始终显示该消息。

如果您感到困惑,我认为您可以忽略session并使用request代替。在这种情况下,您将属性设置为请求对象,如下所示

request.setAttribute("message", "error message");

而在jsp中,从session.getAttribute()改为request.getAttribute(),那么在用户注册之前就没有办法显示消息了。

于 2013-02-20T02:01:10.233 回答
0

既然你不喜欢在你的 JSP 中有 jstl 标签,让我们回到老派的解决方案: inline java in jsp

<%
    HttpSession session = request.getSession(true);
    session.setAttribute("message","message");
    if(session != null && session.getAttribute("message") != null){
        %><h1><%= session.getAttribute("message")%></h1><%
    }
%>

使用空/空检查,只有在验证后填充错误消息时才会显示错误消息。

于 2013-02-20T01:23:26.687 回答