无法在浏览器窗口中查看警报

时间:2014-02-08 23:58:21

标签: java javascript jsp java-ee netbeans

如果用户登录失败,我编写了一个显示错误消息的代码。 servlet代码如下:

HttpSession session = request.getSession(true);


/*User class is a Java bean with an isValid attribute*/
  User user= new User(); 
  if (!user.isValid()) {
         request.setAttribute("errorMessage"," Invalid Parameters!");
         request.getRequestDispatcher("RegistrationPage.jsp").forward(request, response);
  }



// RegistrationPage.jsp file code snippet is below


<script>
function loginFailure() {
           System.out.println("Invalid parameters");
           if(request.getParameter("errorMessage") != null) {
              alert("<%= request.getParameter("errorMessage") %>");        
           }

</script>

<body onload="loginFailure()">
</body>

我无法理解为什么在登录失败时页面没有显示警告消息。它确实用于loginFailure的方法和alert函数。

2 个答案:

答案 0 :(得分:1)

首先,正如@PM 77-1所说,你需要getAttribute()而不是getParameter()。另外,如果条件为真,您不希望System.out执行吗?但更大的问题是你混淆了Java和JavaScript。您的条件if(request.getParameter("errorMessage") != null)(可能意味着作为Java代码在服务器端执行)不在scriptlet标记内,因此JavaScript解释器将尝试执行它并失败。看起来你想要做的就是:

<script>
function loginFailure() {<%
           if(request.getParameter("errorMessage") != null) {
               System.out.println("Invalid parameters"); 
               %>
               alert("<%= request.getAttribute("errorMessage") %>");
               <%      
           }%>
</script>

这是最简单的解决方法。虽然您并不想将服务器端和客户端代码混合到一定程度(即将任何Java代码放在JavaScript函数中)。最好在函数外部定义var errorMessage,比如var errorMessage="<%=request.getAttribute("errorMessage")==null?"":request.getAttribute("errorMessage").toString()%>",然后使用JavaScript条件(不是Java,就像你想要的那样),只有当它的长度大于零。

答案 1 :(得分:0)

Scriptlet and javascript to display this message:
<%
            String message = (String) request.getAttribute("errorMessage");
            if (message != null) {
            %> 
              <script>
                   alert('<%=message%>');
              </script> 
           <%
            }else{

            %>
            <script>
                 alert("Login Successfull");

            </script>
        <%       
            }
        %>