ถ้า…อยู่ใน JSP หรือ JSTL


283

ฉันต้องการที่จะส่งออกรหัส HTML บางส่วนตามเงื่อนไขบางอย่างในไฟล์ JSP

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

ฉันจะทำสิ่งนั้นได้อย่างไร ฉันควรใช้ JSTL หรือไม่


1
ตัวอย่างที่สองมีตัวอย่างที่ดี ไปดู> exampledepot.8waytrips.com/egs/javax.servlet.jsp.jstl.core/…
darkapple

เป็นไปได้ที่ซ้ำกันของวิธีใช้ตัวเลือก if-else ใน JSTL
Alex K

คำตอบ:


536

ฉันควรใช้ JSTL หรือไม่

ใช่.

คุณสามารถใช้<c:if>และ<c:choose>แท็กเพื่อสร้างการเรนเดอร์แบบมีเงื่อนไขใน jsp โดยใช้ JSTL

ในการจำลองว่าคุณสามารถใช้:

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

หากต้องการจำลองถ้า ... อื่นคุณสามารถใช้:

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

ขอบคุณสำหรับสิ่งนั้น ... จริงๆแล้วฉันเป็น UI dev มากกว่า ... ดังนั้นจึงไม่มีความรู้เกี่ยวกับ JSTL มากนักโปรดช่วยให้ฉันเป็นตัวอย่างการทำงานที่คล้ายกันของ JSTL .. ฉันหมายถึงถ้า ... อื่น ๆ
testndtv

ขอบคุณสำหรับตัวอย่าง .. เงื่อนไขที่ฉันมีจริงๆคือเงื่อนไข JS .. หาก navigator.userAgent.match (/ iPad / i)! = null ดังนั้นฉันสามารถเขียนได้โดยตรงใน if test = "condition" ..
testndtv

1
ดี JSTL จะดำเนินการในตอนท้ายของเซิร์ฟเวอร์มันจะสร้าง HTML ออกมาและส่งต่อให้กับลูกค้า
Jigar Joshi

ตกลง ... ไม่เป็นไร ... แต่สำหรับสภาพจริงเช่นในการทดสอบ = "เงื่อนไข" ... ฉันสามารถระบุเงื่อนไข JS และถ้าใช่ฉันสามารถเขียนได้โดยตรงเช่นฉันสามารถเขียน <c: เมื่อทดสอบ = "เนวิเกเตอร์ .userAgent.match (/ iPad / i)! = null; ">
testndtv

คุณสามารถอัปเดตคำถามของคุณด้วยเงื่อนไขที่คุณต้องการทดสอบ
Jigar Joshi

170

หากคุณเพียงแค่ต้องการส่งออกข้อความที่แตกต่างกันตัวอย่างที่กระชับยิ่งขึ้นจะเป็น

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

มันเป็นวิธีที่สั้นกว่าC: เลือก


เป็นจาวาสคริปต์หรือ. jsp หรือไม่
otherDewi

1
ไม่ทำงานเมื่อใช้ตัวแปรบูลีนเป็นเงื่อนไขใด ๆ แนะนำ?
Adnane.T

สิ่งนี้จำเป็นต้องใส่ไว้ในแท็กพิเศษหรือเพียงวางลงใน HTML โดยตรงหรือไม่
CodyBugstein

5
@otherDewi: มันคือ JSTL ซึ่งสามารถใช้ในไฟล์ JSP ตัวดำเนินการแบบมีเงื่อนไขหรือประกอบไปด้วยมีอยู่ในภาษาอื่น ๆ มากมายรวมถึง Javascript
bergie3000

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
ฉันสามารถสันนิษฐานได้ว่าถ้าเป็นครั้งแรกเมื่อเงื่อนไขเป็นที่พอใจจากนั้นครั้งที่สองเมื่อจะไม่ถูกประหารชีวิต?
กระโดด

เนื่องจากคุณได้รับความช่วยเหลือด้านเนื้อหานอกเวลาสำหรับการเริ่มต้น และเนื่องจาก webdevs สามารถใช้งานได้โดยไม่ต้องเรียนรู้
Another

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>

ฉันคิดว่าคุณสามารถเรียกใช้เมธอด (เช่น. equals) บนคอนเทนเนอร์ (ish) ใหม่เท่านั้นเช่น Tomcat 7+
แหวน


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

คุณสามารถเขียนเงื่อนไข if-else ได้<% %>ในหน้า jsp และรหัส 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

ในกรณีที่คุณต้องการเปรียบเทียบสตริงเขียน 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>

-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

ฉันมีปัญหาเดียวกันและฉันคิดว่าคุณไม่สามารถใช้ Javascript ใน JSTL ได้หากมีเงื่อนไข

การแก้ปัญหาประเภทหนึ่งอาจอยู่ใน 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.