如果用户登录失败,我编写了一个显示错误消息的代码。 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函数。
答案 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>
<%
}
%>