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?


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>

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 .


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.


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>

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>

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>

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

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

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

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

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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.