Java 为什么这些jstlc:tests不停止呈现内容?
我只是想向同事演示为什么我们不应该使用JSTL标记,但我不知道为什么所有东西都会被渲染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
<!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。我有正确的命名空间,但如果我这样做,它将不会进入条件。