有谁有任何想法,为什么这个代码可以工作:
<h:outputText value="#{allocations[0].policyNumber}" />
Run Code Online (Sandbox Code Playgroud)
这段代码可以工作:
<c:forEach var="i" begin="1" end="5">
<h:outputText value="aaa"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
但是这段代码不起作用(GUI中没有任何内容):
<c:forEach var="allocation" items="#{allocations}" >
<h:outputText value="aaa"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我正在使用命名空间"http://java.sun.com/jstl/core".allocations是java中的一个集合.我已经尝试了我能想到的一切,并且不知道下一步该尝试什么.
该#{}符号是从统一EL.这仅在JSTL 1.2中受支持.您的JSTL名称空间URI与您使用JSF的事实相结合表明您实际上正在使用JSTL 1.1.
你有2个选择:
请使用${}符号.您应该只保证bean已经存在于范围中.该${}符号即不会自动创建管理豆(在#{}做这一点).
升级到JSTL 1.2.下载链接和详细信息可以在我们的JSTL维基页面中找到.不要忘记将XML名称空间URI更改为http://java.sun.com/jsp/jstl/core.
不用说,选项2是首选.你应该禁止${}你的JSF页面.
作为一个完全不同的替代方案,你也可以使用Facelets <ui:repeat>而不是<c:forEach>.但是,您应该了解Facelets在视图渲染时运行的主要区别,以及JSTL在视图构建期间运行.另请参阅JSF2 Facelets中的JSTL ......有意义吗?
| 归档时间: |
|
| 查看次数: |
5456 次 |
| 最近记录: |