<c:if>无法工作?</c:if>

时间:2013-08-30 09:03:53

标签: arrays jsp el

现在我可以从服务器获得EO,EO中有一个数组。我只是想从数组中获取值,我怎么能得到它?

以下是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;
}
}

如何获取数组中的值并将其用于与复选框值进行比较?请帮帮我。

1 个答案:

答案 0 :(得分:0)

你是否理解那里的JSP代码将运行服务器端,并且它会将javascript写入将运行客户端的页面?我没有看过代码是否有意义但是初始for循环将导致向页面写入一些循环的javascript。

使用您的jsp for循环代码添加ticketDiscountCarrier DOM元素 - 这将要求您的服务器端代码返回所有可能的元素,而不仅仅是已检查的元素。或者,使用两个对象,一个用于所有对象,一个用于打折 - 但两者都来自服务器。无论哪种方式,您现在都可以在创建时设置其已检查状态,将负载放在服务器上而不是客户端上。如果我误解了并且以某种方式异步使用,请完全抛弃jsp代码并使用纯javascript解析数据。

Over Simplified(allCarriers是一个具有String name且boolean discount的对象):

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