jika ... lain dalam JSP atau JSTL

283

Saya ingin menampilkan beberapa kode HTML berdasarkan pada beberapa kondisi dalam file JSP.

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

Bagaimana saya bisa melakukan itu? Haruskah saya menggunakan JSTL?

testndtv
sumber
1
Exampledepot memiliki beberapa contoh yang bagus. Silahkan lihat> exampledepot.8waytrips.com/egs/javax.servlet.jsp.jstl.core/…
darkapple
Kemungkinan rangkap dari cara menggunakan opsi if-else di JSTL
Alex K

Jawaban:

536

Haruskah saya menggunakan JSTL?

Iya.

Anda dapat menggunakan <c:if>dan memberi <c:choose>tag untuk membuat rendering bersyarat dalam jsp menggunakan JSTL.

Untuk mensimulasikan jika , Anda dapat menggunakan:

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

Untuk mensimulasikan jika ... lain , Anda dapat menggunakan:

<c:choose>
    <c:when test="${param.enter=='1'}">
        pizza. 
        <br />
    </c:when>    
    <c:otherwise>
        pizzas. 
        <br />
    </c:otherwise>
</c:choose>
Jigar Joshi
sumber
Thx untuk itu ... Sebenarnya saya lebih ke UI dev ... Jadi tidak memiliki banyak pengetahuan tentang JSTL .. Bisakah Anda berikan saya contoh kerja yang sama dari JSTL .. Maksud saya jika .. lain
testndtv
Thx untuk contohnya..Kondisi yang saya miliki sebenarnya adalah kondisi JS..Jika navigator.userAgent.match (/ iPad / i)! = Null Jadi saya dapat menulisnya secara langsung di if test = "condition" ..
testndtv
1
baik JSTL akan mengeksekusi di server dan itu akan membuat HTML dari itu dan meneruskannya ke klien
Jigar Joshi
Ok..itu tidak apa-apa ... Tapi untuk kondisi aktual yaitu dalam tes = "kondisi" ... Dapatkah saya menentukan kondisi JS dan jika ya, dapatkah saya menulisnya secara langsung mis. Dapatkah saya menulis <c: when test = "navigator .userAgent.match (/ iPad / i)! = null; ">
testndtv
dapatkah Anda memperbarui pertanyaan dengan kondisi yang ingin Anda uji
Jigar Joshi
170

Jika Anda hanya ingin menampilkan teks yang berbeda, contoh yang lebih ringkas adalah

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

Itu jauh lebih pendek daripada c: pilih .

KIR
sumber
apakah ini javascript atau .jsp?
otherDewi
1
tidak bekerja saat menggunakan variabel boolean sebagai kondisi yang disarankan?
Adnane.T
Apakah ini perlu dimasukkan dalam tag khusus, atau cukup tempel ini langsung ke HTML?
CodyBugstein
5
@otherDewi: Ini JSTL, yang dapat digunakan dalam file JSP. Operator kondisional atau ternary ada dalam banyak bahasa lain, termasuk Javascript.
bergie3000
2
@ bergie3000: Tidak , ini bukan JSTL . Ini EL .
BalusC
105

Konstruk untuk ini adalah:

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

Jika kondisinya tidak mahal, saya kadang-kadang lebih suka menggunakan dua <c:iftag yang berbeda - itu membuatnya lebih mudah dibaca.

Bozho
sumber
4
Dapatkah saya berasumsi bahwa jika pertama kali ketika kondisi terpenuhi, maka yang kedua ketika tidak akan dieksekusi?
hop
karena Anda mendapatkan bantuan konten di luar kotak, sebagai permulaan. Dan karena webdev dapat menggunakannya tanpa belajar lagi-lain-dsl
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>
Hiren Odedra
sumber
10

Jika Anda ingin membandingkan string , tulis JSTL berikut:

<c:choose>
    <c:when test="${myvar.equals('foo')}">
        ...
    </c:when>
    <c:when test="${myvar.equals('bar')}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>
aebersold
sumber
Saya pikir Anda hanya dapat memanggil metode (seperti. Sama) pada wadah (ish) baru, seperti Tomcat 7+.
Dering
6

cara sederhana:

<c:if test="${condition}">
    //if
</c:if>
<c:if test="${!condition}">
    //else
</c:if>
Milad Heidari
sumber
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>
Bhushan Sanghavi
sumber
0
<c:if test="${any_cond}" var="condition">
    //if part
</c:if>
<c:if test="${!condition}">
    //else part
</c:if>
Sachin Kumar
sumber
-1

Jika Anda ingin melakukan hal berikut dengan menggunakan JSTL Tag Libe, ikuti langkah-langkah berikut:

[Persyaratan] jika angka adalah parutan dari sama dengan 40 dan lebih rendah dari 50 kemudian tampilkan "Dua digit angka dimulai dengan 4" jika tidak "Angka lainnya".

[Solusi]

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>`
pengguna3466950
sumber
-1

Anda dapat menulis kondisi if-else di <% %>dalam halaman jsp dan kode html di luar<% %>

Sebagai contoh:

   <%
        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
    <%
        }
    %>
Shivam
sumber
-1

Jika Anda ingin membandingkan string, tulis JSTL berikut:

<c:choose>
    <c:when test="${myvar.equals('foo')}">
        ...
    </c:when>
    <c:when test="${myvar.equals('bar')}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>
Mohammad Sherafatian
sumber
-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>

Aman Kumar
sumber
Ini mungkin memberikan solusi tetapi tolong pertimbangkan untuk menambahkan beberapa detail dengan kode
Patel Romil
-2

Aku punya masalah yang sama dan saya pikir Anda tidak dapat menggunakan Javascript dalam JSTL jika kondisi.

Jenis solusi bisa dalam 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>

Anda harus meletakkan skrip ini di tempat seharusnya kode html yang ingin Anda tulis.

Guillaume Tako
sumber