谈c:forEach

     1.简要的说明

      我已经到网上搜过,这个主题的文章已经很多了。但是写的都不够好,至少多第一次接触这个主题的人来说写的不够好。因为他们没有注意到怎么样才是学习一个新事物,新技术的最好方法。最好的方法是从具体的入手。如果是知识,我们就从具体的事物开始,如果是技术,就从具体的操作开始,如果是理论,就从具体的问题开始。只有在积累了一定的具体的东西的时候,我们才能有效的在抽象层次上进行讨论。同样,研究也一样。所以我们在写文章的时候,最好的方式是show,把那些具体的东西展示给别人,而不是说教。

      2.我的问题

       我现在做的是一个JSF项目,其中有一个页面是用来显示一个订单中用户选择了的产品。在一个订单中可以有一个或者多个产品。为了突出意图,我们假设只要求显示产品的名字。代码如下:

       <c:forEach items="#{orderBean.productionList}" var="production" >
                   <tr>
                            <td>
                                  <h:commandLink value="#{production.name}"></h:commandLink>
                          </td>
                   </tr>
       </c:forEach >

                                                                         代码2-1

       这是一个很简单的实现,这里用了一个连接来显示产品的名字,目的是让用户可以点击产品的名字来查看产品的详细信息。我们在后台backing bean里面,是用一个list来存储产品列表的。现在有一个问题:当用户在页面上点击一个产品的名字的时候,后台要知道用户点击的是list 中第几个。有两个实现办法,分别如代码2-2,和代码2-3。

       <c:set var="num" value="0" />

       <c:forEach items="#{orderBean.productionList}" var="production" >
                   <tr>
                            <td>
                                  <h:commandLink value="#{production.name}">

                                         <f:param name="itemId" value="#{num}" />

                                  </h:commandLink>
                          </td>
                   </tr>
       </c:forEach >

                                              代码2-2

        <c:forEach items="#{orderBean.productionList}" var="production" varStatus="row" >
                   <tr>
                            <td>
                                  <h:commandLink value="#{production.name}">

                                         <f:param name="itemId" value="#{row.index}" />

                                  </h:commandLink>
                          </td>
                   </tr>
        </c:forEach >

                                            代码2-3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值