JSTL c:forEach在Facelets中不起作用

时间:2012-07-16 10:23:12

标签: jsf jstl facelets

我有一个名为test.xhtml的文件我试图在Facelets中使用foreach访问哈希映射,但是它没有显示键值对,我的代码如下所示。这是怎么造成的,我该如何解决?

    <html xmlns:c="http://java.sun.com/jstl/core" xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
    <title>JSTL Simple Conditional Execution Example</title>
</head>
<h:body>
    <f:view>
        <c:forEach var="nameMap" items="${specificationAutogege.details}">
            <p> ${nameMap.key}</p>
        </c:forEach>
    </f:view>
</h:body>

是否可以在Facelets中使用JSTL?

HTML输出呈现如下:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jstl/core">
<head>
    <title>JSTL Simple Conditional Execution Example</title>
</head>
<body>
    <c:forEach var="nameMap" items="{Versnellingsk=A very long text come here, Kleur=ZWART Two, Model=3008, Carrosiere=5 deures MPV, A very long text come here=Date Here, BrandShoert=E, Type=3008 Hybrid4 2.0 HDi, Merk=Peugeot, Bowjaar=2011 Shortgate}" varstatus="true">
        <p/>
    </c:forEach>
</body>
</html>

2 个答案:

答案 0 :(得分:10)

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

此JSTL XML命名空间URI特定于Facelets 1.x. JSF 2.x附带了Facelets 2.x,它具有不同的JSTL XML名称空间URI:

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

由于引入了JSF 2.2新的XML命名空间域来删除旧的sun.com域。

xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"

另见:

答案 1 :(得分:-1)

xhtml扩展名表明你使用的是JSF2而不是JSF,因此你需要使用$ {}表示法切换到#{}表示法。

希望有所帮助。