如果…在JSP或JSTL中


283

我想根据某些条件在JSP文件中输出一些HTML代码。

if (condition 1) {
    Some HTML code specific for condition 1
}
else if (condition 2) {
    Some HTML code specific for condition 2
}

我怎样才能做到这一点?我应该使用JSTL吗?


1
Exampledepot有一些不错的例子。看看> exampledepot.8waytrips.com/egs/javax.servlet.jsp.jstl.core/...
darkapple

Answers:


536

我应该使用JSTL吗?

是。

您可以使用<c:if><c:choose>标记使用JSTL在jsp中进行条件渲染。

为了模拟如果,您可以使用:

<c:if test="condition"></c:if>

要模拟if ... else,可以使用:

<c:choose>
    <c:when test="${param.enter=='1'}">
        pizza. 
        <br />
    </c:when>    
    <c:otherwise>
        pizzas. 
        <br />
    </c:otherwise>
</c:choose>

THX为...其实我更到UI开发...所以没有JSTL..Could的很多知识请您提供JSTL..I的类似的工作例如意味着的if..else
testndtv

我的条件实际上是一个JS条件..if navigator.userAgent.match(/ iPad / i)!= null因此,我可以直接在if test =“ condition”中编写它
。–

1
好的JSTL将在服务器端执行,它将从中创建HTML并将其传递给客户端
Jigar Joshi,

好的..那很好...但是对于实际条件,即在test =“ condition”中...我可以指定任何JS条件吗?如果可以,可以直接编写它,例如,我可以写<c:when test =“ navigator .userAgent.match(/ iPad / i)!= null;“>
testndtv 2011年

您可以使用要测试的条件来更新您的问题吗
Jigar Joshi

170

如果您只想输出不同的文本,则更简洁的示例是

${condition ? "some text when true" : "some text when false"}

c:choose短。


这是javascript还是.jsp?
otherDewi

1
使用布尔变量作为条件时无法正常工作吗?
Adnane.T 2014年

是否需要将其包含在特殊标记中,或者仅将其直接粘贴到HTML中?
CodyBugstein 2014年

5
@otherDewi:它是JSTL,可以在JSP文件中使用。但是,条件或三元运算符还存在许多其他语言中,包括Javascript。
bergie3000 2014年

2
@ bergie3000:,这不是JSTL。这是EL
BalusC

105

其构造为:

<c:choose>
   <c:when test="${..}">...</c:when> <!-- if condition -->
   <c:when test="${..}">...</c:when> <!-- else if condition -->
   <c:otherwise>...</c:otherwise>    <!-- else condition -->
</c:choose>

如果条件并不昂贵,我有时会更喜欢只使用两个不同的<c:if标签-这样更易于阅读。


4
我可以假设如果满足第一个条件时,第二个将不执行?
2012年

因为您可以立即获得内容帮助。而且因为webdev可以在不学习的情况下使用它-other-dsl
Bozho 2015年

11
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<c:set var="val" value="5"/>
<c:choose> 
  <c:when test="${val == '5'}">
    Value is 5
  </c:when>
  <c:otherwise>
    Value is not 5
  </c:otherwise>
</c:choose>

10

如果要比较字符串,请编写以下JSTL:

<c:choose>
    <c:when test="${myvar.equals('foo')}">
        ...
    </c:when>
    <c:when test="${myvar.equals('bar')}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

我认为您只能在新的(ish)容器(例如Tomcat 7+)上调用方法(例如.equals)。


2
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<c:set var="isiPad" value="value"/>
<c:choose>
   <!-- if condition -->
   <c:when test="${...}">Html Code</c:when> 
   <!-- else condition -->
   <c:otherwise>Html code</c:otherwise>   
</c:choose>


-1

如果要使用JSTL Tag Libe执行以下操作,请按照以下步骤操作:

[要求]如果一个数字大于40且小于50,则显示“以4开头的两位数字”,否则显示“其他数字”。

[解决方案]

1. Please Add the JSTL tag lib on the top of the page.`
     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>`

2. Please Write the following code
`
<c:choose>
       <c:when test="${params.number >=40 && params.number <50}">
              <p> Two digit number starting with 4. </p>
       </c:when>
       <c:otherwise>
              <p> Other numbers. </p>
       </c:otherwise>
  </c:choose>`

-1

您可以<% %>在jsp页面中编写if-else条件,在html代码之外编写HTML代码<% %>

例如:

   <%
        String username = (String)session.getAttribute("username");
        if(username==null)  {
    %>            
        <p> username is null</p> //html code
    <%
        } else {
    %>
        <p> username is not null</p> //html code
    <%
        }
    %>


-1
<c:choose>
<c:when test="${not empty userid and userid ne null}">
      <sql:query dataSource="${dbsource}" var="usersql">
                SELECT * FROM newuser WHERE ID = ?;
                <sql:param value="${param.userid}" />
      </sql:query>
 </c:when>
 <c:otherwise >
       <sql:query dataSource="${dbsource}" var="usersql">
                 SELECT * FROM newuser WHERE username = ?;
                 <sql:param value="${param.username}" />
       </sql:query>                              
  </c:otherwise>


它可能提供了解决方案,但请考虑使用代码添加一些细节
Patel Romil

-2

我有同样的问题,我想如果条件允许,您不能在JSTL中使用Javascript 。

一种解决方法可能是在Javascript中:

<script>

    var isiPad = navigator.userAgent.match(/iPad/i) != null;

    if (isiPad) {
        document.write("Some HTML code for con1");
    } else {
        document.write("Some HTML code for con2");
    }

</script>

您必须将此脚本放在要编写的html代码所在的位置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.