【问题标题】:Not able to show the message on the same page using sessions?无法使用会话在同一页面上显示消息?
【发布时间】:2013-02-04 21:33:36
【问题描述】:

这来自我的以下问题,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>

【问题讨论】:

  • 发布您的jsp代码以打印消息
  • 您的 JSP 页面如何显示消息?
  • 你想在哪里显示错误信息?您的 jsp 中没有用于打印消息的代码 sn-p。

标签: java jsp session servlets


【解决方案1】:

在你的 JSP 页面上,使用这个:

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

【讨论】:

  • 您不必使用 c:out 标签。只需执行 ${sessionScope.message}。 c:out 标签是为了安全起见转义 XML。
  • 好吧,我对此一无所知,我只需要简单地粘贴一下? o.O
  • 将该代码放在您希望消息出现在 JSP 页面上的任何位置。
  • 它确实显示了消息,但是如果我想在验证条件并单击注册按钮后显示它呢?
【解决方案2】:

既然你不喜欢在你的 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><%
    }
%>

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

【讨论】:

  • 由于某种原因,它正在打印,但在我点击注册按钮后没有。
  • 这意味着 message 属性已经在用户会话中。修复它的最简单方法是在通过验证时从会话中删除会话属性。 session.removeAttribute("消息");
  • 我们是不是很困惑? :P 我只想在用户完成点击后而不是在 o.O 之前显示消息
【解决方案3】:

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

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

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

而在jsp中,从session.getAttribute()改成request.getAttribute(),那么在用户签名之前就没有办法显示消息了起来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    相关资源
    最近更新 更多