//我的action获取从数据获取了城市的列表,是从city表中取的,就id,cityname俩个字段
int id =Integer.parseInt(request.getParameter("id"));
List citylist=cityDao.findAll();
User user=userDao.findId("id");
request.setAttribute("User", user);
request.setAttribute("cityList", citylist);
return mapping.findForward("update");//我有个用户表,有个字段是城市,就是根据页面的城市下拉框取值的,
//现在在页面如何让它加载修改页面的时候,城市列表就是我之前选择的那个值,而不是“请选择”<select name="User.city">
    
     <c:forEach items="${requetsScope.cityList}" var="city">
<option value="${city.cityname}">
${city.cityname }
</option>
     </c:forEach>
     <c:if test="{User.city==city.cityname}">
        <option value="${city.cityname}" selected>
${city.cityname }
</option>
     </c:if>
 
</select>
上面是我写的页面代码,执行后城市列表还是在第一个位置,并不是我从用户表选的那个城市,我的代码没错吧,各位帮帮忙想想办法,我用的ssh,struts1.2的

解决方案 »

  1.   

    不好意思
    <c:if test="${User.city==city.cityname}">
    发帖的时候排版把el表达式的$ 删掉了,实践代码是有的。 
      

  2.   


    <select name="User.city">
    <c:forEach items="${requetsScope.cityList}" var="city">
    <c:choose>
    <c:when test="{User.city==city.cityname}">
    <option value="${city.cityname}" selected>
            ${city.cityname }
        </option>
    </c:when>
    <c:otherwise>
    <option value="${city.cityname}">
    ${city.cityname }
    </option>
    </c:otherwise>
    </c:choose>  
    </c:forEach>
    </select>  这样试试看
      

  3.   

    weijing_007 的代码逻辑没问题应该可以解决了,
    楼主好好分析一下原因 ,你可以查看一下你的输入页面的 源文件是什么样子的 然后分析一下 你的代码 就可以知道你的代码 逻辑有问题 也就是应该把if判断放到前面 这样应该没问题了
      

  4.   


    <select name="User.city">
        
         <c:forEach items="${requetsScope.cityList}" var="city">
          <c:if test="{User.city!=city.cityname}">
          <option value="${city.cityname}">
            ${city.cityname }
          </option>
         </c:if>
          <c:if test="{User.city==city.cityname}">
            <option value="${city.cityname}" selected>
               ${city.cityname }
            </option>
         </c:if>
     </c:forEach>
          
    </select>
      

  5.   

    User user=userDao.findId("id");
    这个地方 ID是字符串 的不带 User 对象  为空是这样吧User user=userDao.findId(id);
      

  6.   


    我调试过User是有值的,id我不是转int了吗
      

  7.   


    不好意思User user=userDao.findId("id");是我发帖复制错了,实际代码上是User user=userDao.findId(id);
      

  8.   

    http://blog.csdn.net/APOLLO_TS/archive/2009/09/19/4569135.aspx
      

  9.   

    <c:if test="{User.city==city.cityname}"></c:if>
    是不是这个地方 改成这样试试???<c:if test="{User.city.cityname==city.cityname}"></c:if>

      

  10.   

    jstl ${User.city.cityname eq city.cityname } eq
      

  11.   

    <c:if test="{User.city.equals(city.cityname)}"> </c:if> 是这样不?
      

  12.   

    ${User.city.cityname eq city.cityname }
      

  13.   

    LZ 你首先用out 输入下 你User.city  和 city.cityname 的内容 ,然后再看下是不是一样?
      

  14.   

    输出了User.city,真的有列表里中的城市
      

  15.   

    我在jsp设断点了,但是两个值相等竟然不进if方法体?神奇哦
      

  16.   

    <select name="User.city">
        
         <c:forEach items="${requetsScope.cityList}" var="city">
    你单词 写错了 requestScope.cityList
      

  17.   

    在action直接取出,存进request里,在页面取出比较就ok了,神奇哦
      

  18.   

     ${requetsScope.cityList}   
       一直走到28楼被截获了