0

我浏览了所有与 JSTL 和 arrayList 相关的帖子,仍然找不到解决方案。

我一直在尝试使用 taglib 在 jsp 文件上迭代 ArrayList。我在构建路径中包含了最新的 jstl 1.2 jar。已正确配置 taglib。

但仍然在使用的行前面出现错误

 <c:forEach>

标签。它说

 <c:foreach>not recognized!, 

是的,它在 forEach 中显示“e”错误!

请在下面找到我的代码。

控制器代码:

   List<String> rolesList = new ArrayList<String>();
   rolesList.add(ga.getAuthority());

JSP 代码:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

   <select>
      <c:forEach items="${rolesList}" var="role">
             <option>${role}</option>
        </c:forEach>
    </select> 
4

3 回答 3

0

我在构建路径中包含了最新的 jstl 1.2 jar。

这不是完全正确的方法。

假设您使用的是 Eclipse,则 JAR 文件应该放在项目的/WEB-INF/lib文件夹中。真的没有什么需要做的了。您不需要摆弄项目的Build Path属性。您应该撤消您在那里所做的一切以试图“解决”问题。

如果您/WEB-INF/lib出于某种原因确实坚持将 JAR 放在项目文件夹之外,那么您不应该编辑Build Path属性,而是编辑Deployment Assembly属性。这将注意 JAR实际上也最终出现在/WEB-INF/lib构建和部署的 WAR 中。

于 2012-11-07T19:52:10.067 回答
0

你的 RUNTIME 类路径中有 jstl 1.2 jar 吗?这才是最重要的!

于 2012-04-18T06:45:18.690 回答
0

当我在 jsp 中包含 jsf 时,我也面临同样的问题

然后我下载最新的 jstl jar 并包含在项目库中,

然后在标题中添加以下代码

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

并将 $ 更改为 # 因为它在运行时不可见的数组列表,我更改了您的代码它对我有用

你的代码

<select>
      <c:forEach items="${rolesList}" var="role">
             <option>${role}</option>
        </c:forEach>
</select> 

我变成了

 <select>
      <c:forEach var="list" items="#{Test.rolesList}" var="role">
             <option>${list.role}</option>
        </c:forEach>
</select>

注意:@ManagedBean(name="Test") Test是后台bean代码 中的Managedbean

谢谢

于 2012-11-07T09:52:41.640 回答