以前的遗留系统,很多jsp里嵌套了java代码,现在我需要用el和jstl替换掉,遇到了一个循环嵌套的代码,请教怎么用el或者jstl替换?        <%
for(int j=0; j<listStation.size(); j++){
station = (TStation)listStation.get(j);
bl = false;
for ( int k = 0; k < havestatinlist.size(); k++){
havestation = (TUserstation)havestatinlist.get(k);
if (havestation.getStationsid().equals(station.getId())){
bl = true;
break;
}
}
if (bl){
%>
&nbsp;&nbsp;<input name=setStationbox checked="checked" type=checkbox value="<%=station.getId()%>" /><%=station.getStationname()%><br>
<%
}else{
%>
&nbsp;&nbsp;<input name=setStationbox type=checkbox value="<%=station.getId()%>" /><%=station.getStationname()%><br>
<%
}
}
%>用forEach可以实现循环嵌套吗?里面的判断用<c:choose><c:when>应该可以实现吧

解决方案 »

  1.   

    <c:forEach var="ls" items="${listStation}"> <c:set value="${ls}" var="station"/> 
    <c:set value="false" var="bl"/> <c:forEach var="hs" items="${havestatinlist}"> 
    <c:set value="${hs}" var="havestation"/> 
    <c:if test="${havestation.getStationsid().equals(station.getId())}">
    <c:set value="true" var="bl"/> 
    </c:forEach> <c:choose>
    <c:when test="${bl==true}">
    &nbsp;&nbsp;<input name=setStationbox checked="checked" type=checkbox value="${station.getId()}" />
    ${station.getStationname()}<br>
    </c:when>
    <c:otherwise>
    &nbsp;&nbsp;<input name=setStationbox type=checkbox value="${station.getId()}" />
    ${station.getStationname()}<br>
    </c:otherwise>
    </c:choose></c:forEach> 
      

  2.   

    <c:forEach var="hs" items="${havestatinlist}"> 
    <c:set value="${hs}" var="havestation"/>  这里 forEach里已经定义 hs变量了 var="hs",后面test里可以直接用啊。
    <c:if test="${hs.getStationsid().equals(station.getId())}">
      

  3.   


    <c:forEach var="hs" items="${havestatinlist}">   
    <c:if test="${hs.getStationsid().equals(station.getId())}">
    <c:set value="true" var="bl"/>
    </c:if>  
    </c:forEach>
      

  4.   

    <c:if test="${hs.getStationsid().equals(station.getId())}">一直报错,提示500错误:
    " e function stationsid must be used with a prefix when a default namespace is not specified "
      

  5.   

    OK 搞定了,这样就可以了<c:forEach var="ls" items="${listStation}">  
      <c:set value="false" var="bl"/>  
        <c:forEach var="hs" items="${havestatinlist}">
          <c:if test="${hs.stationsid==ls.id}">
            <c:set value="true" var="bl"/>
          </c:if>
    </c:forEach> 多谢大家:)