eğer… JSP veya JSTL içinde başka


283

Bir JSP dosyasındaki bazı koşullara göre bazı HTML kodları çıktısını almak istiyorum.

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

Bunu nasıl yapabilirim? JSTL kullanmalı mıyım?


1
Exampledepot'un bazı güzel örnekleri var. Bir göz atın> exampledepot.8waytrips.com/egs/javax.servlet.jsp.jstl.core/…
darkapple

Yanıtlar:


536

JSTL kullanmalı mıyım?

Evet.

JSTL kullanarak jsp'de koşullu oluşturma yapmak için <c:if>ve <c:choose>etiketlerini kullanabilirsiniz .

If simüle etmek için şunları kullanabilirsiniz:

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

Eğer simüle ise ... başka , aşağıdakileri kullanabilirsiniz:

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

Bunun için Thx ... Aslında ben UI dev içine daha fazla ... Yani JSTL hakkında çok fazla bilgi sahibi değil misiniz ... Bana JSTL benzer bir çalışma örneği verebilir misiniz .. I if demek ..
else

Örnek için Thx .. Sahip olduğum koşul aslında bir JS koşulu .. if navigator.userAgent.match (/ iPad / i)! = Null Yani eğer doğrudan test = "condition"
yazabilir miyim

1
iyi JSTL sunucu sonunda yürütecek HTML dışarı sandık ve istemciye
Jigar Joshi

Tamam ... bu iyi ... Ama test = "koşul" daki gerçek durum için ... Herhangi bir JS koşulunu belirtebilir miyim ve evet ise, doğrudan yazabilir miyim, örneğin <c: when test = "navigator yazabilir miyim .userAgent.match (/ iPad / i)! = null; ">
testndtv

sorunuzu test etmek istediğiniz koşulla güncelleyebilirsiniz
Jigar Joshi

170

Sadece farklı bir metin çıktısı almak istiyorsanız, daha kısa bir örnek

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

C: seçiminden çok daha kısadır .


bu javascript veya .jsp mi?
otherDewi

1
koşul olarak bir boole değişkeni kullanılırken çalışmaz mı?
Adnane.T

Bunun özel bir etikete eklenmesi mi yoksa doğrudan HTML'ye yapıştırmanız mı gerekiyor?
CodyBugstein

5
@otherDewi: Bir JSP dosyasında kullanılabilen JSTL. Koşullu veya üçlü işleç, Javascript dahil olmak üzere diğer birçok dilde bulunmaktadır.
bergie3000

2
@ bergie3000: Hayır , bu JSTL değil . Bu EL .
BalusC

105

Bunun yapısı:

<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>

Koşul pahalı değilse, bazen iki farklı <c:ifetiket kullanmayı tercih ederim - okumayı kolaylaştırır.


4
İlk koşul sağlandığında, ikincisinin ne zaman yürütülmeyeceğini varsayabilir miyim?
Hop

çünkü başlangıç ​​için hazır içerik desteği alırsınız. Ve webdevs henüz başka-dsl öğrenmeden kullanabilirsiniz çünkü
Bozho

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

Dizeleri karşılaştırmak istiyorsanız , aşağıdaki JSTL'yi yazın:

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

Tomcat 7+ gibi yeni (ish) kaplarda yalnızca yöntemleri (.equals gibi) çağırabileceğinizi düşünüyorum.
Ring

6

basit yol :

<c:if test="${condition}">
    //if
</c:if>
<c:if test="${!condition}">
    //else
</c:if>

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>

0
<c:if test="${any_cond}" var="condition">
    //if part
</c:if>
<c:if test="${!condition}">
    //else part
</c:if>

-1

JSTL Tag Libe kullanarak aşağıdakileri yapmak istiyorsanız, lütfen aşağıdaki adımları izleyin:

[Gereksinim] bir sayı 40'tan küçük ve 50'den küçükse "4 ile başlayan iki basamaklı sayı" aksi takdirde "Diğer sayılar" görüntülenir.

[Çözüm]

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

If-else koşulunu <% %>jsp sayfalarına ve html kodunu<% %>

Örneğin:

   <%
        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

Dizeleri karşılaştırmak istiyorsanız, aşağıdaki JSTL'yi yazın:

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

-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>


Çözüm sağlayabilir, ancak lütfen kodu içeren bazı ayrıntıları eklemeyi düşünün
Patel Romil

-2

Aynı sorunu vardı ve eğer bir JSTL durumunda Javascript kullanılamaz durumda düşündüm .

Javascript'te bir geçici çözüm olabilir:

<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>

Bu komut dosyasını, yazmak istediğiniz html kodunun olması gereken yere koymanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.