<select id='type'  name="pageVO.type" >
    <option value="">请选择</option>
    <c:forEach items="${archiveTypeMap}" var="archiveTypeMap">
       <c:if test=" ${archiveTypeMap.name == pageVO.type}" var="rst">
           <option value="${archiveTypeMap.name}" selected="selected">${archiveTypeMap.name}</option>
       </c:if>
       <c:if test="${!rst}">
           <option value="${archiveTypeMap.name}">${archiveTypeMap.name}</option>
       </c:if>
    </c:forEach>
</select>-----------------代码如上,当archiveTypeMap.name的值和pageVO.type的值相等时,表达式${archiveTypeMap.name == pageVO.type}返回的依然是false,高手帮忙给看看,谢谢。
其中archiveTypeMap.name和pageVO.type都是汉字。

解决方案 »

  1.   

    LZ不必纠结、肯定是字符串不等!
    看看是否是空格或者其他什么问题导致字符串不等!
    你可以再下面的if中试着输出两个变量的值看看!
    用引号引起来!
    <c:if test="${!rst}">
         <option value="${archiveTypeMap.name}">"${archiveTypeMap.name}"--"${pageVO.type}"</option>
    </c:if>
      

  2.   

    是不是要用equals()判断值相等啊。==不是判断对象相当的吗。
      

  3.   

    这跟用eq这些绝对没有关系!
    必须是你字符串本身有问题!
    在JSTL中 ==跟eq的效果是一样的!
      

  4.   

    改成这样应该是可以的:
    <select id='type'  name="pageVO.type" >
        <option value="">请选择</option>
        <c:forEach items="${archiveTypeMap}" var="archiveTypeMap">
           <option value="${archiveTypeMap.name}" ${archiveTypeMap.name ==pageVO.type?'selected':''>${archiveTypeMap.name}</option>
        </c:forEach>
    </select>