2013-08-30 45 views
0

現在我可以從服務器獲取EO,EO中有一個數組。我只想從數組中獲得價值,我怎麼能得到它?<c:if>無法正常工作?

這裏是JSP代碼:

<c:forEach items="${ticketDiscountCriteria.ticketDiscountCarrier}" var="carrier" 
        varStatus="carrierStatus"> 
        for (var j = 0; j < searchTicketDiscountForm.ticketDiscountCarrier.length; j++) { 
         var value = searchTicketDiscountForm.ticketDiscountCarrier[j].value; 
         alert(value); 
         <c:if test = "${carrier==value}"> 
          alert(carrier.value); 
          searchTicketDiscountForm.ticketDiscountCarrier[j].checked = true; 
          break; 
         </c:if > 
        } 
       </c:forEach> 

另一個代碼是EO:

public class TicketDiscountCriteria implements java.io.Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = 8427162334846611072L; 
private String[] ticketDiscountCarrier; 

public String[] getTicketDiscountCarrier() { 
    return ticketDiscountCarrier; 
} 
public void setTicketDiscountCarrier(String[] ticketDiscountCarrier) { 
    this.ticketDiscountCarrier = ticketDiscountCarrier; 
} 
} 

我怎樣才能在陣列中獲得的價值,並用它來與複選框值進行比較?請幫幫我。

+0

瞭解客戶 - 服務器架構之前,首先你可以開發實際應用。 – Lion

回答

0

您是否理解那裏的JSP代碼將運行服務器端,並且它會將JavaScript寫入將運行客戶端的頁面?我沒有閱讀,看看代碼是否有意義,但最初的循環會導致寫入一些javascript for循環到頁面。

使用你的JSP的循環代碼,添加ticketDiscountCarrier DOM元素 - 這需要你的服務器端代碼返回所有可能的元素,而不僅僅是那些檢查。或者,使用兩個對象,一個用於所有用戶,另一個用於打折 - 但都是從服務器提供的。無論哪種方式,您現在可以在創建時設置它們的檢查狀態,將負載放在服務器上而不是放在客戶端上。如果我誤解了這一點,並且這是異步使用的,請完全拋棄jsp代碼並使用純JavaScript解析數據。

在簡體(ALLCARRIERS是字符串名稱和布爾貼現的對象):

<c:forEach items="${ticketDiscountCriteria.allCarriers}" var="carrier"> 
     <c:choose> 
      <c:when test="${carrier.discounted == true}"> 
       <input type="checkbox" name="ticketDiscountCarrier" value="${carrier.name}" checked="checked">${carrier.name} 
      </c:when> 
      <c:otherwise> 
       <input type="checkbox" name="ticketDiscountCarrier" value="${carrier.name}">${carrier.name} 
      </c:otherwise> 
     </c:choose> 
    </c:forEach> 
+0

非常感謝你,讓我試試看 – xuyaming