c: foreach只返回一个空值



我正在使用JSF 2,出于某些目的我需要c:foreach。但无论我的列表有多大,c:foreach只循环一次,返回空值。我尝试了所有的方法,甚至在separate.xhtml中隔离了c:foreach,但它仍然给出了相同的结果。如果你需要一些代码,请问,但我想让c:foreach至少在单独的.xhtml中工作,我希望它也能在我的代码中工作。

在Web浏览器中打开页面,右键单击并查看源。你在那里看到了普通香草的<c:forEach>标签,对吧?它根本没有被解析和执行?这是不对的。您需要确保在XML命名空间中声明了JSTL核心taglib,以便Facelets解析和执行它。正确的XML命名空间声明如下:

xmlns:c="http://java.sun.com/jsp/jstl/core"

如果你已经完成了,那么这只能意味着你正在一台没有预装JSTL的服务器上运行网络应用程序。Glassfish和JBoss AS等成熟的Java EE应用程序服务器已经捆绑了JSTL,但Tomcat和Jetty等简单的servlet容器则没有。您需要下载JSTL库并将其放在webapp的/WEB-INF/lib中,甚至可能放在服务器自己的/lib文件夹中。

另请参阅:

  • 我们的JSTL标签wiki页面-包含下载链接和安装说明

与具体问题无关您是否清楚<c:forEach>是视图构建时间标记,而不是视图渲染时间标记?如果你真的在寻找后者,那么你应该使用Facelets自己的<ui:repeat>标签。另请参阅JSF2 Facelets中的JSTL。。。有道理吗?

最新更新