在JSTL中有if-else标记吗?
是的,但是它笨拙得要命。
<c:choose>
<c:when test="${condition1}">
...
</c:when>
<c:when test="${condition2}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
除了skaffman回答,简单的if-else你可以使用这样的三元运算符
<c:set value="34" var="num"/>
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/>
没有如果-否则,只有如果。
<c:if test="${user.age ge 40}">
You are over the hill.
</c:if>
你可以选择使用choose-when:
<c:choose>
<c:when test="${a boolean expr}">
do something
</c:when>
<c:when test="${another boolean expr}">
do something else
</c:when>
<c:otherwise>
do this when nothing else is true
</c:otherwise>
</c:choose>
我只是简单地使用了两个if标签,我想我应该添加一个答案,以防它对其他人有用:
<c:if test="${condition}">
...
</c:if>
<c:if test="${!condition}">
...
</c:if>
虽然技术上不是一个if-else本身,但行为是相同的,并且避免了使用choose标记的笨拙方法,因此根据您的需求有多复杂,这可能是更可取的。
你必须使用以下代码:
使用 <%@ taglib 前缀=“c” uri=“http://www.springframework.org/tags/form”%>
and
<c:select>
<option value="RCV"
${records[0].getDirection() == 'RCV' ? 'selected="true"' : ''}>
<spring:message code="dropdown.Incoming" text="dropdown.Incoming" />
</option>
<option value="SND"
${records[0].getDirection() == 'SND'? 'selected="true"' : ''}>
<spring:message code="dropdown.Outgoing" text="dropdown.Outgoing" />
</option>
</c:select>
从时间复杂度的角度来看,这是一种有效的方法。一旦它得到一个true条件,在此之后它将不再检查任何其他条件。在多个If中,它将检查每个和条件。
<c:choose>
<c:when test="${condtion1}">
do something condtion1
</c:when>
<c:when test="${condtion2}">
do something condtion2
</c:when>
......
......
......
.......
<c:when test="${condtionN}">
do something condtionn N
</c:when>
<c:otherwise>
do this w
</c:otherwise>
</c:choose>
除了需要else之外,在许多情况下,您还需要在多个位置使用相同的条件。
我更喜欢把条件提取到一个变量中:
<c:set var="conditionVar" value="#{expression}"/>
在那之后,你可以根据需要多次使用条件变量:
...
<c:if test="#{conditionVar}">
...
</c:if>
<c:if test="#{!conditionVar}">
...
</c:if>
...
<c:if test="#{conditionVar}">
...
</c:if>
<c:if test="#{!conditionVar}">
...
</c:if>
...
c:choose元素适用于更复杂的情况,但如果只需要if else,我认为这种方法更好。它效率高,有以下好处:
如果变量名选得好,可读性更强 更可重用,因为提取了条件和结果 变量可以在其他if和其他表达式中重用。它不鼓励多次编写相同的条件(并对其求值)。
推荐文章
- 使用JSTL检查集合大小
- 如何在JSP中导入类?
- 如果……在JSP或JSTL中
- JSP技巧使模板更容易?
- getAttribute()和getParameter()的区别
- 如何使用if-else选项在JSTL
- 我应该如何使用servlet和Ajax?
- 如何提交更改下拉列表的表格?
- 基于web的应用程序设计模式
- 计算空的或空的JSTL c标记
- 超类“javax.servlet.http”。在Java构建路径中找不到HttpServlet
- 如何解决“惰性初始化角色集合失败”Hibernate异常
- 用jQuery下载一个文件。Ajax
- 如何使用JSP/Servlet将文件上传到服务器?
- JSF、Servlet和JSP之间有什么区别?