2011-01-03 39 views

Trả lời

467

Có, nhưng nó rất khó khăn như địa ngục, ví dụ:

<c:choose> 
    <c:when test="${condition1}"> 
    ... 
    </c:when> 
    <c:when test="${condition2}"> 
    ... 
    </c:when> 
    <c:otherwise> 
    ... 
    </c:otherwise> 
</c:choose> 
+5

Ngoài thẻ wrapper (chọn), tôi không thấy cách này là bất kỳ tiết hơn nếu/elseif/else sẽ được. Một thẻ wrapper hầu như không cấu thành 'clunky như địa ngục', phải không? –

+16

@Steven: Đó là bản chất XML của nó. Có nhiều nhân vật trong bản mẫu hơn là trong logic thực tế. – skaffman

+2

Ah, ok. Điều tương tự cũng có thể được đặt cho '', sau đó cũng vậy. –

89

Đối với đơn giản if-else bạn có thể sử dụng toán tử tam phân như thế này

<c:set value="34" var="num"/> 
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/> 
+4

Đây là một câu trả lời hay, nhưng rất có tính tình huống về mức độ hữu ích của nó. –

38

Không có if-else, chỉ nếu.

<c:if test="${user.age ge 40}"> 
You are over the hill. 
</c:if> 

Tùy chọn bạn có thể sử dụng lựa chọn-khi:

<c:choose> 
    <c:when test="${a boolean expr}"> 
    do something 
    </c:when> 
    <c:when test="${another boolean expr}"> 
    do something else 
    </c:when> 
    <c:otherwise> 
    do this when nothing else is true 
    </c:otherwise> 
</c:choose> 
+0

Xin chào @iwxfer, liên kết ở trên của bạn hiện không có sẵn, vui lòng cập nhật, nếu bạn có thể làm điểm số tốt, hãy loại bỏ nó. – Ajay2707

17

tôi đã đi với chỉ đơn giản là sử dụng hai nếu thẻ, nghĩ rằng tôi muốn thêm một câu trả lời trong trường hợp đó là sử dụng cho bất cứ ai khác:

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

trong khi về mặt kỹ thuật không phải là if-else mỗi lần, hành vi này giống nhau và tránh cách tiếp cận clunky sử dụng thẻ choose, do đó tùy thuộc vào yêu cầu của bạn phức tạp như thế nào có thể thích hợp hơn.

+4

downvoter xin vui lòng bình luận – jonk

+1

Hãy xem xét trường hợp khi điều kiện là một cái gì đó phức tạp và xấu xí như $ {không param.age gt 42 và someOtherVar eq 'foobar'}. Bạn sẽ phải lưu trữ điều kiện vào một biến boolean tạm thời để bạn có thể làm điều kiện, hoặc viết nghịch đảo của điều kiện đó. Cả hai đều xấu xí. Cú pháp "khác" là một nghịch đảo được bảo đảm. –

+2

Thực tế, một điều kiện phức tạp sẽ yêu cầu biến cục bộ hoặc viết nghịch đảo, nhưng cả hai tùy chọn đó vẫn hoạt động. Tôi đã làm rõ rằng nó sẽ phụ thuộc vào mức độ phức tạp của yêu cầu là liệu cách tiếp cận này có phù hợp hơn với thẻ 'select' hay không. – jonk

1

bạn phải sử dụng mã này:

với <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>

<c:select> 
      <option value="RCV" 
       ${records[0].getDirection() == 'RCV' ? 'selected="true"' : ''}> 
       <spring:message code="dropdown.Incoming" text="dropdown.Incoming" /> 
      </option> 
      <option value="SND" 
       ${records[0].getDirection() == 'SND'? 'selected="true"' : ''}> 
       <spring:message code="dropdown.Outgoing" text="dropdown.Outgoing" /> 
      </option> 
     </c:select> 
Các vấn đề liên quan