nếu khác người khác trong JSP hoặc JSTL


283

Tôi muốn xuất một số mã HTML dựa trên một số điều kiện trong tệp tin JSP.

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

Làm thế nào tôi có thể làm điều đó? Tôi có nên sử dụng JSTL?


1
Testplingepot có một số ví dụ hay. Có một cái nhìn> exampledepot.8waytrips.com/egs/javax.servlet.jsp.jstl.core/...
darkapple

Câu trả lời:


536

Tôi có nên sử dụng JSTL?

Đúng.

Bạn có thể sử dụng <c:if><c:choose>các thẻ để tạo kết xuất có điều kiện trong jsp bằng JSTL.

Để mô phỏng nếu , bạn có thể sử dụng:

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

Để mô phỏng nếu ... khác , bạn có thể sử dụng:

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

Thx cho điều đó ... Thật ra tôi thích giao diện người dùng hơn ... Vì vậy, tôi không có nhiều kiến ​​thức về JSTL..Có ​​thể bạn vui lòng cung cấp cho tôi một ví dụ hoạt động tương tự của JSTL..Tôi có nghĩa là
nếu..else

Thx cho ví dụ..Điều kiện tôi có thực sự là một điều kiện JS..if navigator.userAgent.match (/ iPad / i)! = Null Vì vậy tôi có thể viết nó trực tiếp trong if test = "condition" ..
testndtv

1
JSTL sẽ thực thi ở cuối máy chủ, nó sẽ loại bỏ HTML và chuyển nó cho khách hàng
Jigar Joshi

Được rồi ... ổn thôi .userAgent.match (/ iPad / i)! = null; ">
testndtv

bạn có thể cập nhật câu hỏi của mình với điều kiện bạn muốn kiểm tra không
Jigar Joshi

170

Nếu bạn chỉ muốn xuất văn bản khác, một ví dụ ngắn gọn hơn sẽ là

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

Đó là cách ngắn hơn c: select .


đây là javascript hay .jsp?
otherDewi

1
không hoạt động khi sử dụng biến boolean như điều kiện đề nghị nào?
Adnane.T

Điều này có cần phải được đính kèm trong một thẻ đặc biệt hay chỉ cần dán trực tiếp vào HTML?
CodyBugstein

5
@otherDewi: Đó là JSTL, có thể được sử dụng trong tệp tin JSP. Toán tử điều kiện hoặc ternary tồn tại trong nhiều ngôn ngữ khác, bao gồm cả Javascript.
bergie3000

2
@ bergie3000: Không , đây không phải là JSTL . Đây là EL .
BalusC

105

Cấu trúc cho việc này là:

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

Nếu điều kiện không đắt, đôi khi tôi chỉ thích sử dụng hai <c:ifthẻ riêng biệt - nó giúp bạn dễ đọc hơn.


4
Tôi có thể giả sử rằng nếu lần đầu tiên khi điều kiện được thỏa mãn, thì lần thứ hai khi không được thực thi?
nhảy

bởi vì bạn nhận được hỗ trợ nội dung bên ngoài, để bắt đầu. Và bởi vì webdevs có thể sử dụng nó mà không cần học thêm - 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

Trong trường hợp bạn muốn so sánh các chuỗi , hãy viết JSTL sau:

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

Tôi nghĩ bạn chỉ có thể gọi các phương thức (như .equals) trên các thùng chứa (ish) mới, như Tomcat 7+.
Đổ chuông

6

cách đơn giản :

<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

Nếu bạn muốn làm như sau bằng cách sử dụng JSTL Tag Libe, vui lòng làm theo các bước sau:

[Yêu cầu] nếu một số là một vắt hơn 40 và thấp hơn 50 thì hiển thị "Số có hai chữ số bắt đầu bằng 4" nếu không "Các số khác".

[Các giải pháp]

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

Bạn có thể viết điều kiện if-other bên <% %>trong các trang jsp và mã html bên ngoài<% %>

Ví dụ:

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

Trong trường hợp bạn muốn so sánh các chuỗi, hãy viết JSTL sau:

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


Nó có thể cung cấp giải pháp nhưng vui lòng xem xét thêm một số chi tiết bằng mã
Patel Romil

-2

Tôi gặp vấn đề tương tự và tôi nghĩ rằng bạn không thể sử dụng Javascript trong JSTL nếu có điều kiện.

Một cách giải quyết có thể có trong 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>

Bạn sẽ phải đặt tập lệnh này trong đó mã html bạn muốn viết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.