【问题标题】:JSTL: String Comparison issue using c:When tagJSTL:使用 c:When 标记的字符串比较问题
【发布时间】:2010-08-21 05:04:08
【问题描述】:

我在使用 C:When 标签比较 2 个字符串值时遇到问题
我正在尝试如下

<c:when test="${dbUserName eq uName}">

在哪里,
dbUserName = “sohail”。它正在从 db 列
uName = “test” 获取值。这实际上是登录页面上的输入值
但是比较总是给出真实的结果......

这是完整的代码

<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<HTML>
<body>
<c:set var='uName' value="${param.username}"/>
<c:set var='uPassword' value="${param.password}"/>
<sql:setDataSource var="db" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test" user="root" password="sohail"/>
<sql:query var="query1"  dataSource="${db}"
sql="select * from login where loginID = '${uName}'">
</sql:query>
<c:forEach var="row" items="${query1.rows}">
<c:set var='dbUserName' value="${row.loginID}"/>
<c:set var='dbUserPassword' value="${row.password}"/>
</c:forEach>
<c:out value="${uName}"/>
<c:out value="${row.loginID}"/>
<c:out value="${row.password}"/>
<c:choose>
<c:when test="${dbUserName eq uName}">
<c:redirect url="profile1.jsp"/>
</c:when>
<c:otherwise>
<c:redirect url="checlLogin.jsp"/>
</c:otherwise>
</c:choose>
</body> 
</html>  

请建议我如何解决比较问题?

嗨,阿菲,
谢谢,你是对的。问题已解决
我刚刚修改了如下查询,它工作正常

<sql:query var="query1"  dataSource="${db}"
sql="select * from login">
</sql:query>  

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    您似乎已经对页面进行了结构化,使得 dbUserName 和 uName 始终相同。

    <sql:query var="query1"  dataSource="${db}"
    sql="select * from login where loginID = '${uName}'">
    
    <c:set var='dbUserName' value="${row.loginID}"/>
    

    如果您返回一个登录ID 不等于uName 的行......! (mySQL 有时对大小写匹配的奇怪默认处理无法承受。)

    您真正希望页面做什么?

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多