2011-11-14 27 views
30

Mã JSF sau đây chứa hai số <c:if></c:if> riêng biệt. Hãy nhìn vào nó.Biểu thị của if-elseif-else trong EL bằng cách sử dụng JSF

<?xml version='1.0' encoding='UTF-8' ?> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:c="http://java.sun.com/jsp/jstl/core"> 
    <h:head> 
     <title>JSF EL</title> 
    </h:head> 
    <h:body> 
     <h:form> 

      <c:set scope="request" var="row" property="x" value="10"/> 

      <c:if test="#{row==10}"> 
       <h:outputLabel value="value = 10"/> 
      </c:if> 

      <c:if test="#{row==15}"> 
       <h:outputLabel value="value = 15"/> 
      </c:if> 

     </h:form> 
    </h:body> 
</html> 

Nó chỉ đơn giản hiển thị value = 10 trên trang JSF tại thời gian chạy. Tôi cần đại diện trên cùng một số <c:if></c:if> với if-elseif-else khác (ngữ cảnh Java).

if(row.equals(10)) 
{ 
    //Do something...(JSF stuff) 
} 
else if(row.equals(15)) 
{ 
    //Do something...(JSF stuff) 
} 
else 
{ 
    //Do something...(JSF stuff) 
} 

Làm thế nào nó có thể được biểu diễn bằng ngôn ngữ biểu thức (EL) sử dụng JSF?

+0

thể trùng lặp của [có điều kiện hiển thị các phần tử HTML] (http://stackoverflow.com/questions/4870462/conditionally-displaying-html-elements) – BalusC

Trả lời

41

Các mã sau đây là cách dễ nhất:

<h:outputLabel value="value = 10" rendered="#{row == 10}" /> 
<h:outputLabel value="value = 15" rendered="#{row == 15}" /> 
<h:outputLabel value="value xyz" rendered="#{row != 15 and row != 10}" /> 

Link cho cú pháp biểu thức EL. http://developers.sun.com/docs/jscreator/help/jsp-jsfel/jsf_expression_language_intro.html#syntax

+0

Cần lưu ý rằng 'thuộc tính rendered' áp dụng tại pha 'render' có nghĩa là mọi thứ bên trong sẽ được đánh giá đầy đủ. Nếu một thành phần lớn không được trả lại (như thế này) nó có thể có nghĩa là rất nhiều mã có thể được thực hiện và kết quả sẽ bị loại bỏ. – KarlP

45

Bạn có thể sử dụng EL nếu bạn muốn làm việc như NẾU:

<h:outputLabel value="#{row==10? '10' : '15'}"/> 

Thay đổi phong cách hoặc các lớp:

style="#{test eq testMB.test? 'font-weight:bold' : 'font-weight:normal'}" 

class="#{test eq testMB.test? 'divRred' : 'divGreen'}" 
+1

có cách nào tương tự để sử dụng nếu không có người khác không? – sree

8

Bạn có thể sử dụng "if" sử dụng nhà điều hành có điều kiện trong ngôn ngữ biểu hiện như sau:

<p:outputLabel value="#{transaction.status.equals('PNDNG')?'Pending': 
            transaction.status.equals('RJCTD')?'Rejected': 
            transaction.status.equals('CNFRMD')?'Confirmed': 
            transaction.status.equals('PSTD')?'Posted':''}"/> 
2

Một giải pháp có thể là:

<h:panelGroup rendered="#{bean.row == 10}"> 
    <div class="text-success"> 
     <h:outputText value="#{bean.row}"/> 
    </div> 
</h:panelGroup> 
Các vấn đề liên quan