GVKun编程网logo

使用JSTL forEach循环的varStatus作为ID(js foreach循环用法)

4

如果您对使用JSTLforEach循环的varStatus作为ID和jsforeach循环用法感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解使用JSTLforEach循环的varStatus作

如果您对使用JSTL forEach循环的varStatus作为IDjs foreach循环用法感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解使用JSTL forEach循环的varStatus作为ID的各种细节,并对js foreach循环用法进行深入的分析,此外还有关于中的varStatus="stat"的属性及用法、中 varStatus的作用、中 varStatus的属性简介、c# – .Net – 什么时候List.ForEach优先于标准的foreach循环?的实用技巧。

本文目录一览:

使用JSTL forEach循环的varStatus作为ID(js foreach循环用法)

使用JSTL forEach循环的varStatus作为ID(js foreach循环用法)

我想使用JSTL forEach循环中的计数,但是我的代码似乎不起作用。

<c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">    <div id="divIDNo${theCount}">    </div></c:forEach>

产生

<div id="divIDNojavax.servlet.jsp.jstl.core.LoopTagSupport$1Status@5570e2" >

答案1

小编典典

由set设置的变量varStatusLoopTagStatus对象,而不是int。采用:

<div id="divIDNo${theCount.index}">

澄清:

  • ${theCount.index}``0除非您已设置begin属性,否则开始于
  • ${theCount.count} 开始于 1

中的varStatus="stat"的属性及用法" alt="中的varStatus="stat"的属性及用法">

中的varStatus="stat"的属性及用法">中的varStatus="stat"的属性及用法

       我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如输出行号,确认是否为集合i第一行或最后一行等等...

varStatus属性常用参数

  • ${status.index} 输出行号,从0开始。
  • ${status.count} 输出行号,从1开始。
  • ${status.current} 当前这次迭代的(集合中的)项
  • ${status.first} 判断当前项是否为集合中的第一项,返回值为true或false
  • ${status.last} 判断当前项是否为集合中的最后一项,返回值为true或false

代码示例:

输出行号,从1开始

<!-- 模版数据 -->
    <c:forEach items="${list}" var="door" varStatus="stat">
    <tr>
        <td>${stat.count}</td>
        <td>${door.name}</td>
        <td>${door.tel}</td>
        <td>${door.addr}</td>
        <td>
            <a href="doorDelete?id=${door.id}">删除</a>
            &nbsp;|&nbsp;
            <a href="doorInfo?id=${door.id}">修改</a>
        </td>
    </tr>
    </c:forEach>

谢谢观看,有事没事点个赞啊

中 varStatus的作用" alt="中 varStatus的作用">

中 varStatus的作用">中 varStatus的作用

varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。

varStatus=“status”事实上定义了一个status名的对象作为varStatus的绑定值。

该绑定值也就是status封装了当前遍历的状态,比如,可以从该对象上查看是遍历到了第几个元素:${status.count}

 

<span>${status.count}</span> 写在 c:forEach 里面.

常见的用法的是<c:forEach var="e" items="${ss.list}" varStatus="status">
                                 <!--实现隔行变色效果--> 
                                 <c:if test="${status.count%2==0}" >
                                       <tr  />
                                  </c:if>

                                  <c:if test="${status.count%2!=0}" >
                                       <tr  />
                                  </c:if> 

                        </c:forEach>

<c:forEach items="${students}" var="s" varStatus="vs">    
         <tr style=''background-color: ${vs.count %2==0 ?"blue":"gray"};''>
             <td>${s.id }</td>
             <td>${s.name }</td>
             <td>${s.age }</td>
         </tr>
    </c:forEach>

分行显示蓝色或则灰色。

 

中 varStatus的属性简介" alt="中 varStatus的属性简介">

中 varStatus的属性简介">中 varStatus的属性简介

varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。就拿varStatus=“status”来说,事实上定义了一个status名的对象作为varStatus的绑定值。该绑定值也就是status封装了当前遍历的状态,比如,可以从该对象上查看是遍历到了第几个元素:${status.count}

我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行、偶数行差异;最后一行特殊处理等等。先就varStatus属性常用参数总结下: 

${status.index}      输出行号,从0开始。${status.count}      输出行号,从1开始。${status.current}   当前这次迭代的(集合中的)项${status.first}  判断当前项是否为集合中的第一项,返回值为true或false${status.last}   判断当前项是否为集合中的最后一项,返回值为true或falsebegin、end、step分别表示:起始序号,结束序号,跳跃步伐。
如:<c:forEach begin=''1'' end=''5'' step=''2'' items=''${list}'' var=''item''>表示:操作list集合汇中1~5条数据,不是逐条循环,而是按每2个取值。即操作集合中的第1、3、5条数据。
下面是我从网上找的图,觉得挺好,收藏了:c:forTokens items="12,34,56,78.89" delims="," var="dailyPrice">
    <tr>
     <td><c:out value="${dailyPrice}" /></td></tr>//以,号作为字符串分隔!变量名 delims属性可以随便加,可以有一个多或多个 作为分隔符

我们最常用的就是count和index,用来搞斑马线表格
常见的用法的是<c:forEach var="varity" items="${sessionScope.myList}" varStatus="status">
                                 <!--实现斑马线效果--> 
                                 <c:if test="${status.count%2==0}" >
                                       <tr bgcolor="lightyellow">
                                  </c:if>
                                  <c:if test="${status.count%2!=0}" >
                                       <tr>
                                  </c:if>
                                       <td>Elements</td>
                                 </tr> 
                        </c:forEach>


<c:forEach var="varity" items="${sessionScope.myList}" varStatus="status">
         ${status.first}/${status.last}
               当前:${status.current}
 </c:forEach>

c# – .Net – 什么时候List.ForEach优先于标准的foreach循环?

c# – .Net – 什么时候List.ForEach优先于标准的foreach循环?

通用列表类具有.ForEach(Action< T> action)方法.现在我已经完成了一些关于它们如何表现的简单时间,似乎通用ForEach是较差的表演者. (Snippet Compiler Friendly)代码如下 –

public static class timer{
    public static long foreachloop = 0;
    public static long Gforeachloop = 0;}

public class something{
    public List<string> myStrings = new List<string>();

    public something()
    {
        for(int i = 1; i<=5000000;i++)
        {
            myStrings.Add(i.ToString());
        }
    }}

public class cls1{
    private static List<string> Strings = new List<string>();
    private static List<string> OtherStrings = new List<string>();

    public static void RunSnippet()
    {
        something s = new something();

        Stopwatch watch = new Stopwatch();
        watch.Start();
        foreach(string x in s.myStrings)
        {
            Strings.Add(x);
        }
        watch.Stop();
        timer.foreachloop = watch.ElapsedMilliseconds;

        watch.Reset();
        watch.Start();

        s.myStrings.ForEach(delegate(string n){OtherStrings.Add(n);});

        s.myStrings.Clear();

        watch.Stop();
        timer.Gforeachloop = watch.ElapsedMilliseconds;

        WL("FOREACH-"+timer.foreachloop + ",Count = " + Strings.Count);
        WL("GFOREACH-"+timer.Gforeachloop + ",Count = " + OtherStrings.Count);
    }

    #region Helper methods

    public static void Main()
    {
        try
        {
            RunSnippet();
        }
        catch (Exception e)
        {
            string error = string.Format("---\nThe following error occurred while executing the snippet:\n{0}\n---",e.ToString());
            Console.WriteLine(error);
        }
        finally
        {
            Console.Write("Press any key to continue...");
            Console.ReadKey();
        }
    }

    private static void WL(object text,params object[] args)
    {
        Console.WriteLine(text.ToString(),args);   
    }

    private static void RL()
    {
        Console.ReadLine(); 
    }

    private static void Break() 
    {
        System.Diagnostics.Debugger.Break();
    }

    #endregion
}

FOREACH出现在177ms,GFOREACH出现在707ms.

现在我猜这是使用它的一个很好的理由,但我想不出一个.显然性能不是原因,所以问题是何时它是最佳选择?

提前致谢.

解决方法

这篇来自Eric Lippert的博客文章给出了背景:

http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx

他正在讨论扩展方法的常见建议,即为IEnumerable< T>做同样的事情,但哲学上的反对意见也适用于List< T> .ForEach.

这表明也许这种方法从来都不是一个好主意,虽然它看起来很“酷”.使用foreach更清楚.

我已经建议这样的方法可以被认为是a fix for the classic closure-over-loop-variable bug.

但在实践中,我只是更好地发现了这样的错误.

今天关于使用JSTL forEach循环的varStatus作为IDjs foreach循环用法的介绍到此结束,谢谢您的阅读,有关中的varStatus="stat"的属性及用法、中 varStatus的作用、中 varStatus的属性简介、c# – .Net – 什么时候List.ForEach优先于标准的foreach循环?等更多相关知识的信息可以在本站进行查询。

本文标签: