el表达式中可以嵌套el表达式吗?

时间:2022-01-25 13:18:18
如果不能的话,那么我想要在el表达式中写变量名怎么办?
像这样:
<c:foreach items="${myList}" var="cur">
    <c:foreach item="${这里是另一个集合,名字是根据上面的(cur.id)拼接字符串组成的}">

    </c:foreach>
</c:foreach>
在第二个集合中怎么办?

19 个解决方案

#2


<c:foreach var="v" items="${list}">
    <c:foreach var="v2" items="${v.subs}">
          // 这里显示子集合里面的属性值
          ${v2.name}
   </c:foreach>
</c:foreach>

#3


不行,我以前遇到过这个问题....

#4


引用 1 楼 rui888 的回复:
给个你参考下把。
感觉没解决啊

#5


引用 2 楼 shadowsick 的回复:
<c:foreach var="v" items="${list}">
    <c:foreach var="v2" items="${v.subs}">
          // 这里显示子集合里面的属性值
          ${v2.name}
   </c:foreach>
</c:foreach>
这个subs是什么东西,这样不是输入list集合中的一个subs的属性值吗?

#6


表示很想知道正解。。。

#7


遍历两个集合不行么?

非得从一个集合里取2次?

#8


引用 5 楼 u011292614 的回复:
Quote: 引用 2 楼 shadowsick 的回复:

<c:foreach var="v" items="${list}">
    <c:foreach var="v2" items="${v.subs}">
          // 这里显示子集合里面的属性值
          ${v2.name}
   </c:foreach>
</c:foreach>
这个subs是什么东西,这样不是输入list集合中的一个subs的属性值吗?


这个subs是例如一个用户集合,每个用户里面有一组权限集合...users...然后user.roles..相当于这个玩意

#9


我重新描述下意思,有两个表useInfo(用户,主键为userId),dating(回答的问题,主键为datingId)
两个表之间的关系一对多,
现在是先从数据库中查出所有问题,根据问题的datingId到userInfo表查出回答了这个问题的用户
下面是显示的效果,回答了问题的用户信息要求显示到该问题的下面
el表达式中可以嵌套el表达式吗?

#10


引用 楼主 u011292614 的回复:
如果不能的话,那么我想要在el表达式中写变量名怎么办?
像这样:
<c:foreach items="${myList}" var="cur">
    <c:foreach item="${这里是另一个集合,名字是根据上面的(cur.id)拼接字符串组成的}">

    </c:foreach>
</c:foreach>
在第二个集合中怎么办?



<c:foreach items="${myList}" var="cur">
    <c:foreach item="${cur}" var="cu">
       <c:foreach item="${cur" var="u">
          ...以此类推,很难理解?
       </c:foreach>       
    </c:foreach>
</c:foreach>

#11


引用 10 楼 zhuchao_ko 的回复:
Quote: 引用 楼主 u011292614 的回复:

如果不能的话,那么我想要在el表达式中写变量名怎么办?
像这样:
<c:foreach items="${myList}" var="cur">
    <c:foreach item="${这里是另一个集合,名字是根据上面的(cur.id)拼接字符串组成的}">

    </c:foreach>
</c:foreach>
在第二个集合中怎么办?



<c:foreach items="${myList}" var="cur">
    <c:foreach item="${cur}" var="cu">
       <c:foreach item="${cur" var="u">
          ...以此类推,很难理解?
       </c:foreach>       
    </c:foreach>
</c:foreach>

cur不会被当成字符串?

#12


不用多层循环啊,直接类似于user.role.permission

#13



el表达式中可以嵌套el表达式吗?
<c:forEach items="${sessionScope.questionnaireList}" var="cur" varStatus="status" >
        <div class="survey">
         <div id="survey${status.count }">
         <div class="bt01"><img src="/baihe/front/images helper/title.png"/>&nbsp;&nbsp;${cur.title }</div>
         <ul>
                <li><input  name="queDone363" type="radio" value="0" /><label for="queDone363_0">${cur.first_ans }</label></li>
                <li><input  name="queDone363" type="radio" value="1"/><label for="queDone363_1">${cur.second_ans }</label></li>
                <c:if test="${!empty cur.three_ans}"> <li><input  name="queDone363" type="radio" value="2"/><label for="queDone363_1">${cur.three_ans }</label></li>
                </c:if>
                <c:if test="${!empty cur.four_ans}"><li><input  name="queDone363" type="radio" value="3"/><label for="queDone363_1">${cur.four_ans }</label></li></c:if>
            </ul>
            <a href="/baihe/ResultServlet?queId=${cur.que_id }&choseans=1" target="_blank" class="icon01">查看调查结果</a>
            
           <c:if test="${LOGIN_USER==null}">
             <a id="submit363" href="javascript:xianshi1(${LOGIN_USER} )" class="right">提交</a>
           </c:if>
           <c:if test="${LOGIN_USER!=null}">
             <a style="display: block" id="submit363" href="javascript:xianshi2('survey${status.count }',${cur.que_id },${LOGIN_USER.loginId} )" class="right">提交</a>
           </c:if>
           <!--以上代码是输出上面的效果,下面要显示该问卷调查的回答者的信息-->
                   <!--就是下面那个人的信息这样显示-->
                   <!--其实主要就是要得到这个${ques1}的效果,ques1是存在session中的一个集合,有很多这样的集合,ques1,ques2,ques3...就是怎么得到这个值-->
                    <!--
                    <c:foreach items="${ques1}" var="cc">

                   </c:foreach>
                     -->
       </div>          
  </div>
</c:forEach>

#14


当然可以,例:列表myList里面包含一个VO对象,VO有属性subList,可以如下写:


<c:foreach items="${myList}" var="vo">     
<c:foreach item="${vo.subList}" var="subVO">        
<c:out value="${subVO.XXX}"/>
</c:foreach> 
</c:foreach>  

#15


看起来很多啊,你问题描述有点不明确了,你所谓的ques是问题,还是人?
<c:forEach items="${sessionScope.questionnaireList}" var="cur" varStatus="status" >不知道这里循环出来的是什么值,这个里是否有ques这个属性?有的话,而且很多,就像你说的,ques1,ques2等等,你用status.ques1就可以拿到了吧,如果说你要循环的话,还要看你怎么取值的

#16


el表达式可以嵌套el表达式,刚刚解决,给后面的人看看,希望能帮到你。${fn:substringAfter(fn:replace(charge.roomCode, "-", "_"), "_")}

#17


反递归(马丹为毛非要留个以上的字符串 楼主加油弄 看好你)

#18


引用 17 楼 a1784100698 的回复:
反递归(马丹为毛非要留个以上的字符串 楼主加油弄 看好你)
用树状结构尝试存储你所需要的数据 然后递归 想必信息量不会很大 层数不会很多 如果信息量大层数多的话那就不建议用递归 安全的嵌套吧 实在不行就试试页面脚本

#19


<c:forEach var="items" items="${list }">
<tr style="height: 40px;">
<td>${items.TYPE_NAME }</td>
<c:forEach var="key" items="${keyList }">
<c:set var='add' value="${key }add" scope="page"/>
<c:set var='sub' value="${key }sub" scope="page"/>
<td>${items[add] }</td>
<td>${items[sub] }</td>
</c:forEach></tr>
</c:forEach>

#1


#2


<c:foreach var="v" items="${list}">
    <c:foreach var="v2" items="${v.subs}">
          // 这里显示子集合里面的属性值
          ${v2.name}
   </c:foreach>
</c:foreach>

#3


不行,我以前遇到过这个问题....

#4


引用 1 楼 rui888 的回复:
给个你参考下把。
感觉没解决啊

#5


引用 2 楼 shadowsick 的回复:
<c:foreach var="v" items="${list}">
    <c:foreach var="v2" items="${v.subs}">
          // 这里显示子集合里面的属性值
          ${v2.name}
   </c:foreach>
</c:foreach>
这个subs是什么东西,这样不是输入list集合中的一个subs的属性值吗?

#6


表示很想知道正解。。。

#7


遍历两个集合不行么?

非得从一个集合里取2次?

#8


引用 5 楼 u011292614 的回复:
Quote: 引用 2 楼 shadowsick 的回复:

<c:foreach var="v" items="${list}">
    <c:foreach var="v2" items="${v.subs}">
          // 这里显示子集合里面的属性值
          ${v2.name}
   </c:foreach>
</c:foreach>
这个subs是什么东西,这样不是输入list集合中的一个subs的属性值吗?


这个subs是例如一个用户集合,每个用户里面有一组权限集合...users...然后user.roles..相当于这个玩意

#9


我重新描述下意思,有两个表useInfo(用户,主键为userId),dating(回答的问题,主键为datingId)
两个表之间的关系一对多,
现在是先从数据库中查出所有问题,根据问题的datingId到userInfo表查出回答了这个问题的用户
下面是显示的效果,回答了问题的用户信息要求显示到该问题的下面
el表达式中可以嵌套el表达式吗?

#10


引用 楼主 u011292614 的回复:
如果不能的话,那么我想要在el表达式中写变量名怎么办?
像这样:
<c:foreach items="${myList}" var="cur">
    <c:foreach item="${这里是另一个集合,名字是根据上面的(cur.id)拼接字符串组成的}">

    </c:foreach>
</c:foreach>
在第二个集合中怎么办?



<c:foreach items="${myList}" var="cur">
    <c:foreach item="${cur}" var="cu">
       <c:foreach item="${cur" var="u">
          ...以此类推,很难理解?
       </c:foreach>       
    </c:foreach>
</c:foreach>

#11


引用 10 楼 zhuchao_ko 的回复:
Quote: 引用 楼主 u011292614 的回复:

如果不能的话,那么我想要在el表达式中写变量名怎么办?
像这样:
<c:foreach items="${myList}" var="cur">
    <c:foreach item="${这里是另一个集合,名字是根据上面的(cur.id)拼接字符串组成的}">

    </c:foreach>
</c:foreach>
在第二个集合中怎么办?



<c:foreach items="${myList}" var="cur">
    <c:foreach item="${cur}" var="cu">
       <c:foreach item="${cur" var="u">
          ...以此类推,很难理解?
       </c:foreach>       
    </c:foreach>
</c:foreach>

cur不会被当成字符串?

#12


不用多层循环啊,直接类似于user.role.permission

#13



el表达式中可以嵌套el表达式吗?
<c:forEach items="${sessionScope.questionnaireList}" var="cur" varStatus="status" >
        <div class="survey">
         <div id="survey${status.count }">
         <div class="bt01"><img src="/baihe/front/images helper/title.png"/>&nbsp;&nbsp;${cur.title }</div>
         <ul>
                <li><input  name="queDone363" type="radio" value="0" /><label for="queDone363_0">${cur.first_ans }</label></li>
                <li><input  name="queDone363" type="radio" value="1"/><label for="queDone363_1">${cur.second_ans }</label></li>
                <c:if test="${!empty cur.three_ans}"> <li><input  name="queDone363" type="radio" value="2"/><label for="queDone363_1">${cur.three_ans }</label></li>
                </c:if>
                <c:if test="${!empty cur.four_ans}"><li><input  name="queDone363" type="radio" value="3"/><label for="queDone363_1">${cur.four_ans }</label></li></c:if>
            </ul>
            <a href="/baihe/ResultServlet?queId=${cur.que_id }&choseans=1" target="_blank" class="icon01">查看调查结果</a>
            
           <c:if test="${LOGIN_USER==null}">
             <a id="submit363" href="javascript:xianshi1(${LOGIN_USER} )" class="right">提交</a>
           </c:if>
           <c:if test="${LOGIN_USER!=null}">
             <a style="display: block" id="submit363" href="javascript:xianshi2('survey${status.count }',${cur.que_id },${LOGIN_USER.loginId} )" class="right">提交</a>
           </c:if>
           <!--以上代码是输出上面的效果,下面要显示该问卷调查的回答者的信息-->
                   <!--就是下面那个人的信息这样显示-->
                   <!--其实主要就是要得到这个${ques1}的效果,ques1是存在session中的一个集合,有很多这样的集合,ques1,ques2,ques3...就是怎么得到这个值-->
                    <!--
                    <c:foreach items="${ques1}" var="cc">

                   </c:foreach>
                     -->
       </div>          
  </div>
</c:forEach>

#14


当然可以,例:列表myList里面包含一个VO对象,VO有属性subList,可以如下写:


<c:foreach items="${myList}" var="vo">     
<c:foreach item="${vo.subList}" var="subVO">        
<c:out value="${subVO.XXX}"/>
</c:foreach> 
</c:foreach>  

#15


看起来很多啊,你问题描述有点不明确了,你所谓的ques是问题,还是人?
<c:forEach items="${sessionScope.questionnaireList}" var="cur" varStatus="status" >不知道这里循环出来的是什么值,这个里是否有ques这个属性?有的话,而且很多,就像你说的,ques1,ques2等等,你用status.ques1就可以拿到了吧,如果说你要循环的话,还要看你怎么取值的

#16


el表达式可以嵌套el表达式,刚刚解决,给后面的人看看,希望能帮到你。${fn:substringAfter(fn:replace(charge.roomCode, "-", "_"), "_")}

#17


反递归(马丹为毛非要留个以上的字符串 楼主加油弄 看好你)

#18


引用 17 楼 a1784100698 的回复:
反递归(马丹为毛非要留个以上的字符串 楼主加油弄 看好你)
用树状结构尝试存储你所需要的数据 然后递归 想必信息量不会很大 层数不会很多 如果信息量大层数多的话那就不建议用递归 安全的嵌套吧 实在不行就试试页面脚本

#19


<c:forEach var="items" items="${list }">
<tr style="height: 40px;">
<td>${items.TYPE_NAME }</td>
<c:forEach var="key" items="${keyList }">
<c:set var='add' value="${key }add" scope="page"/>
<c:set var='sub' value="${key }sub" scope="page"/>
<td>${items[add] }</td>
<td>${items[sub] }</td>
</c:forEach></tr>
</c:forEach>

#20