无法使用会话在同一页面上显示消息?

时间:2013-02-20 00:50:06

标签: java jsp session servlets

这来自我的以下问题,Showing error message on same page with a Session in 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>

3 个答案:

答案 0 :(得分:0)

在JSP页面上,使用:

<c:out value="${sessionScope.message}" />

答案 1 :(得分:0)

因为你不喜欢在你的JSP中使用jstl标签,让我们回到旧学校解决方案:jsp中的inline java

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

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

答案 2 :(得分:0)

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

如果您感到困惑,我认为您可以忽略会话并使用请求。在这种情况下,您将属性设置为请求对象,如此

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

在jsp中,从 session.getAttribute()更改为 request.getAttribute(),然后在用户签名之前无法显示消息起来。