JSP EL字符串比较不起作用

时间:2016-09-06 15:09:39

标签: jsp el

我正在尝试使用以下JSP EL代码来比较Login页面中的输入密码。

密码变量来自文本框并已正确设置;那部分没有错误(或者至少看起来如此!)。

但是当我尝试将密码与字符串" admin"进行比较时(有效密码)。它始终为eq返回false,并且对ne

始终返回true

以下是完整代码:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSTL Core Based Login</title>
</head>
<body>
<form action="CoreBasedLogin.jsp">
Name: <input type="text" name="name" /> <br> <br>
Password: <input type="text" name="password" /> <br> <br>
<input type="submit" value="Login"/>
</form>
<% 
String name = request.getParameter("name");
String password = request.getParameter("name");
%>
<c:set var="name" value="<%=name%>"/>
<c:set var="password" value="<%=password%>"/>
<c:if test="${password ne null}">

<c:if test="${password eq 'admin'}">
<c:out value="Login Successful"></c:out>
</c:if>

<c:if test="${password ne 'admin'}">
<c:out value="Login Failed"></c:out>
</c:if>

</c:if>
</body>
</html>

我知道==运算符和eq运算符都做同样的事情。但我无法使用此代码。

请告知如何继续。

TIA:)

2 个答案:

答案 0 :(得分:2)

在您在此处提供的代码中,对我来说好像是您有错字。有一行:

String password = request.getParameter("name");

我认为应该将name更改为password

答案 1 :(得分:0)

没有看到更多代码,我猜你无法在EL上下文中访问密码参数。

尝试在第一个'if'语句之前添加以下scriplet。这会将密码参数公开给您的EL上下文。

<%
pageContext.setAttribute("password", request.getParameter("password"));
%>

在此处查看让对象可用于部分:https://stackoverflow.com/tags/el/info