2016-09-06 22 views
-2

我正在尝试下面的JSP EL代码来比较登录页面内的输入密码。JSP EL字符串比较不起作用

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

但是,当我尝试比较密码与字符串“管理员”(有效的密码)。它总是返回eq虚假始终为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 :)

+0

的语法看起来是正确的。你使用什么EL版本?您是否验证过密码的值为“admin”?我会打印出来的值只是为了确保:'' –

+0

向我们展示整个jsp页面以及'$ {password}'的输出 – jlars62

+0

@BalusC I现在已经编辑了完整的代码,我有一段时间了。但是,这个确切的代码适用于我的一些学生,并不适用于其他人(和我!) –

回答

0

没有看到更多的代码,我猜,你是无法访问密码参数在EL背景。

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

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

看看部分使物体提供给EL这里:https://stackoverflow.com/tags/el/info