Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这些jstlc:tests不停止呈现内容?_Java_Jsf 2_Jstl - Fatal编程技术网

Java 为什么这些jstlc:tests不停止呈现内容?

Java 为什么这些jstlc:tests不停止呈现内容?,java,jsf-2,jstl,Java,Jsf 2,Jstl,我只是想向同事演示为什么我们不应该使用JSTL标记,但我不知道为什么所有东西都会被渲染 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http

我只是想向同事演示为什么我们不应该使用JSTL标记,但我不知道为什么所有东西都会被渲染

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jstl/core">    
     <h:outputLabel>#{dummyBean.pageBuild}</h:outputLabel>
     <h:outputLabel>#{dummyBean.pageRerendered}</h:outputLabel>     
     <h:outputLabel>#{dummyBean.pageBuild and !dummyBean.pageRerendered}</h:outputLabel>
     <h:outputLabel>#{dummyBean.pageBuild and dummyBean.pageRerendered}</h:outputLabel>
        <c:if test="#{dummyBean.pageBuild and !dummyBean.pageRerendered}">
             <h:outputLabel value="Section 1"></h:outputLabel>
        </c:if>

        <c:if test="#{dummyBean.pageBuild and dummyBean.pageRerendered}">
            <h:outputLabel value="Section 2"></h:outputLabel>
        </c:if>

</ui:composition>
我本以为他们会的

true
false
true
false 
Section 1 

test=“true”
test=“false”
将始终作为布尔值
true
,因为它是有效且非空的
字符串

您可能打算使用
test=“#{true}”
test=“#{false}”


另一个问题是JSTL标记的XML名称空间是错误的,您使用的是Facelets 1.x,而使用的是JSF 2.x。应该是

xmlns:c="http://java.sun.com/jsp/jstl/core"
关于在JSF中使用JSTL,请检查以下答案:


test=“true”
test=“false”
将始终作为布尔值
true
,因为它是有效且非空的
字符串

您可能打算使用
test=“#{true}”
test=“#{false}”


另一个问题是JSTL标记的XML名称空间是错误的,您使用的是Facelets 1.x,而使用的是JSF 2.x。应该是

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

至于在JSF中使用JSTL,请检查以下答案:

test=“false”看起来不像一个表达式。它不应该更像test=${1==0}吗?我的jstl fu很弱,已经很久了,所以我可能错了。你为什么认为你不应该使用jstl?@erickson上帝的话,即balusc:)。顺便说一句,不要说永远都不应该使用它,但是检查
rendered=…
更好。@erickson,使用jstl渲染复杂的视觉模型变得非常棘手。(如呈现表和嵌套表单)。使用jstl完成的任何事情都可以通过自定义标记更轻松地完成。向新的java程序员教授自定义标记是很容易的,在JSF的上下文中,我同意正确使用JSTL是很棘手的。但我不同意自定义标记比JSTL更容易使用;这听起来像是NIH综合征。test=“false”似乎不是一个表达。它不应该更像test=${1==0}吗?我的jstl fu很弱,已经很久了,所以我可能错了。你为什么认为你不应该使用jstl?@erickson上帝的话,即balusc:)。顺便说一句,不要说永远都不应该使用它,但是检查
rendered=…
更好。@erickson,使用jstl渲染复杂的视觉模型变得非常棘手。(如呈现表和嵌套表单)。使用jstl完成的任何事情都可以通过自定义标记更轻松地完成。向新的java程序员教授自定义标记是很容易的,在JSF的上下文中,我同意正确使用JSTL是很棘手的。但我不同意自定义标记比JSTL更容易使用;这听起来像是NIH综合症。在你回答之前,我已经检查过了,并且在我的评论中提到:)。对于我的问题,我从问题中删除了
第1.1节和第2.2节
,但是
第1节和第2节
根据我的预期显示正确或错误的输出又如何呢?使用
也不能阻止
的出现显示。core taglib的XML命名空间是错误的,因此它们根本不会被解析并解释为纯HTML。我有正确的命名空间,但如果我这样做,它将不会进入条件。在回答之前,我已经检查并在我的评论中提到:)。对于我的问题,我从问题中删除了
第1.1节和第2.2节
,但是
第1节和第2节
根据我的预期显示正确或错误的输出又如何呢?使用
也不能阻止
的出现显示。core taglib的XML命名空间是错误的,因此它们根本不会被解析并解释为普通HTML。我有正确的命名空间,但如果我这样做,它将不会进入条件。