2012-11-05 96 views
3

我很清楚of how to build"if(confition) ... else ..."使用JSTL和<choose>,<when><otherwise>标记。为什么JSTL中没有“c:else”标签?

但是我会有兴趣知道设计决定(s),导致强制这个稍微沉重和冗长的构造开发人员即使对于简单的if-else语句,也不包括可与<s:if>(尽管我认为选择标签对于多种选择更加有用和优雅,就像一个强大的开关(...)语句或类似的东西)。

Struts2的有<s:else>tag,所以我不认为这是一个技术上是不可能......

如果谁能赐教我将不胜感激。

编辑:顺便说一下,有没有人认为“否则”真的比“其他”更好? (我不是母语为英语的人,所以可能会有不同的“阴影如果”,我不在这里 - 无论如何,我宁愿输入“其他”:-)

+1

choose..when..otherwise更像switch..case相比。 .else – JKirchartz

+1

不是真的,switch ... case语句通常只对单个原子变量(数字,字符串...)起作用,而不是任意条件。选择...时...否则更像是一个if ... elseif ... else 0到n elseifs。 –

回答

0

许多JSTL元素似乎(对我来说)基于XSLT。例如xsl:choose

+0

确实。准确地知道两者之间的关系会很有趣! –

0

一般来说,IF语句必须跟随ELSE语句,并且在这些注释之间没有别的东西要做。

我们没有,因为如果它在那里,可以在<c:if> .. </c:if><c:else> .. </c:else>之间添加一些不应该存在的东西。

为了确保IF ELSE并且不违反它,ELSE未提供。

但不是什么大不了的事,我们也有其他的标签来完成这件事:

<c:choose> 
    <c:when test="${condition1}"> 
    ... 
    </c:when> 
    <c:when test="${condition2}"> 
    ... 
    </c:when> 
    <c:otherwise> 
    ... 
    </c:otherwise> 
</c:choose> 

参考:http://careerguide.techproceed.com/2013/11/jstl-tutorial-with-examples.html