我一直在努力find我的代码中的问题,我只是没有看到它。 在我的servlet中,我创build了一个国家列表并将其设置为我的请求: List<Country> countryList = (new CountryListForm(countryDAO)).getList(); request.setAttribute(ATTRIBUTE_COUNTRY_LIST, countryList); 当我debugging我的servlet时,我看到国家列表被创build并放入请求。 接下来,在我的JSP中,我得到国家名单,遍历它,并显示在下拉列表中的值: <select id="clubCountryId" name="clubCountryId"> <c:forEach var="country" items="${countryList}"> <option value="${country.id}"> ${fn:escapeXml(country.name)} </option> </c:forEach> </select> 当我debugging这个,我可以看到countryList是在我的请求和国家在场。 但是,我的下拉列表中没有任何内容。 当我查看我的页面的源代码(在Eclipse中)时,我看到以下内容: <select id="clubCountryId" name="clubCountryId"> <c:forEach var="country" items="[eu.ctt.pojo.Country@c7057c, eu.ctt.pojo.Country@391da0, eu.ctt.pojo.Country@1c7f37d, eu.ctt.pojo.Country@42a6eb, eu.ctt.pojo.Country@1dcc4cd]"> <option value=""> </option> </c:forEach> </select> 正如你所看到的,我的五个对象是存在的,但它只是不想迭代它们。 我有其他页面,我基本上做同样的事情(国家名单,但不是在一个下拉列表),我没有问题。 有没有人有什么build议? 提前致谢!
如果我在PowerShell脚本中执行以下操作: $range = 1..100 ForEach ($_ in $range){ if ($_ % 7 -ne 0 ) { continue; } Write-Host "$($_) is a multiple of 7" } 我得到了预期的输出: 7 is a multiple of 7 14 is a multiple of 7 21 is a multiple of 7 28 is a multiple of 7 35 is a multiple […]
如果我有一个JSF支持bean返回一个ArrayListtypes的对象,我应该可以使用<c:foreach>遍历列表中的元素。 每个元素都包含一个映射,尽pipe如何通过JSTL访问映射内容的问题已经在这里得到解答,如果我传递了这样的映射数组,我无法find如何遍历它们,仍然使用JSTL访问映射内容。 有文档指的是简单的迭代器,但不是那些项目本身就是映射的文档。 如果任何人都可以给我一个简单的例子,说明如何在JSP中迭代Java List,那么我将非常感激。 标记
有没有一种方法来确定循环是否最后一次迭代。 我的代码看起来像这样: int[] array = {1, 2, 3…}; StringBuilder builder = new StringBuilder(); for(int i : array) { builder.append("" + i); if(!lastiteration) builder.append(","); } 现在的事情是我不想在最后一次迭代中追加逗号。 现在有一种方法来确定它是否是最后一次迭代,或者我是否用for循环或使用外部计数器来跟踪。
我的项目是使用hibernate 3.4.0 GA来访问数据库,Spring MVC 2.5.6来处理web请求和jsp(jstl)来渲染视图(网页)。 我通过hibernate从数据库中获取一个实体列表,并将其作为模型添加到jsp的modelmap中。当jsp渲染我的网页时,它抛出一个“javax.el.PropertyNotFoundException”。 javax.el.PropertyNotFoundException:在java.lang.Stringtypes中找不到属性'timestamp' 而例外来自: <c:forEach var="statusHistory" items="statusHistoryList"> ${statusHistory.timestamp} </c:forEach> 这似乎是“statusHistory”被视为一个string,而不是一个对象。 “StatusHistory”类有“timestamp”属性和getter方法: public Class StatusHistory{ … private Date timestamp; public Date getTimestamp(){…} … } 我在谷歌上search了一整天。 有些文章说getter方法不符合约定。 但似乎不是我的情况。 有人可以帮帮我吗? 在此先感谢安德鲁
可能重复: 为什么IEnumerable接口上没有ForEach扩展方法? 编辑 作为参考,这里是eric在评论中提到的博客文章 http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx 弊 更多的好奇心,我想,但一个为C#规范Savants … 为什么ForEach()子句不能在IQueryable / IEnumerable结果集上使用(或不可用)… 你必须首先转换你的结果ToList()或ToArray()推测这是一个技术限制的方式C#迭代IEnumerables比。 列表…是否与IEnumerables / IQuerable集合的延期执行有关。 例如 var userAgentStrings = uasdc.UserAgentStrings .Where<UserAgentString>(p => p.DeviceID == 0 && !p.UserAgentString1.Contains("msie")); //WORKS userAgentStrings.ToList().ForEach(uas => ProcessUserAgentString(uas)); //WORKS Array.ForEach(userAgentStrings.ToArray(), uas => ProcessUserAgentString(uas)); //Doesn't WORK userAgentStrings.ForEach(uas => ProcessUserAgentString(uas));
我需要使用Java以相反的顺序遍历List。 那么它在哪里转发: for(String string: stringList){ //…do something } 有没有一些方法来使用for each语法以相反的顺序迭代stringList? 为了清楚起见:我知道如何以相反的顺序迭代列表,但想知道(为了好奇)如何在每个样式中执行它。
我正在写一个SQL查询创build者使用一些参数。 在Java中,通过使用数组长度检查当前数组的位置,可以非常容易地从for循环中检测数组的最后一个元素。 for(int i=0; i< arr.length;i++){ boolean isLastElem = i== (arr.length -1) ? true : false; } 在PHP中,他们有非整数索引来访问数组。 所以你必须使用foreach循环迭代一个数组。 当你需要做出一些决定(在我的情况下追加或/和参数,同时构build查询)这成为问题。 我确定必须有一些标准的做法。 你如何在PHP中解决这个问题?
我有一个持有结果的Bean。 我需要使用JSTL来遍历它并呈现结果。 这是豆: public class DetResults { private List<String> headings; private List<Class<?>> types; private List<Object[]> data; public DetResults() {} public List<String> getHeadings() { return this.headings; } public String getHeading(int which) { return this.headings.get(which); } public List<Class<?>> getTypes() { return this.types; } public Class<?> getType(int which) { return this.types.get(which); } public List<Object[]> getData( ) { return […]
这工作正常(意味着如预期)在C#5.0中: var actions = new List<Action>(); foreach (var i in Enumerable.Range(0, 10)) { actions.Add(() => Console.WriteLine(i)); } foreach (var act in actions) act(); 打印0到9.但是这个10次显示10次: var actions = new List<Action>(); for (var i = 0; i < 10; i++) { actions.Add(() => Console.WriteLine(i)); } foreach (var act in actions) act(); 问题:这是我们在5.0之前的C#版本中遇到的问题; 所以我们必须使用循环本地占位符来封闭,现在在C#5.0中,在“foreach”循环中已经修复了。 但不是在“for”循环中! 这背后的原因是什么(也没有解决for循环的问题)?