Тег выбора формы JSP, отображение внутреннего списка - PullRequest
0 голосов
/ 08 февраля 2012

Мой класс выглядит следующим образом

public class CriteriaConfigImpl implements CriteriaConfig {

    private long elementId;
    private String displayName;
    private String dataType;
    private String internalMap;
    private int displayOrder;
    private List<OperandType> operands;

    //..Setter Getter..//
}

А мой основной класс

public class Query {
    private Long id;

    @NotNull
    @Size(min = 0, max = 1500)
    private String queryString;

    private String searchFilterCondition;

    private List<CriteriaConfig> configuredCriteriaList;

    //.. Other operations ..//

}

На моей странице JSP я хочу отобразить операнды в виде списка, в настоящее время я сделал как

<form:select path="searchFilterCondition" multiple="false">
                        <form:options items="${query.configuredCriteriaList}" itemLabel="operands" value="operands"/>
                    </form:select>

Если мои CriteriaConfig определены как

1. CriteriaConfig {1, "Test1", "String", "Test1", 1, "AND, OR, NOT" }
2. CriteriaConfig {2, "Trial", "Date", "Trial", 2, "LESSTHAN, GREATERTHAN" }

Теперь я хочу проверить, какое имя displayName было выбрано, и отобразить соответствующий раскрывающийся список, как мне это сделать?

1 Ответ

0 голосов
/ 08 февраля 2012

После долгих раздумий у меня есть решение, но оно приведет к проблемам с производительностью в долгосрочной перспективе, в случае, когда у меня будет больше объектов CriteriaConfig, но, тем не менее, это то, что у меня сейчас, если кто-то не придумаетлучше солн.

<c:forEach items="${query.configuredCriteriaList}" var="queryOperations" varStatus="loopStatus">
                        <c:out value="${loopStatus.count}"/>
                        <c:out value="${queryOperations.displayName}"/>
                        <!-- If we want to display the operands specific for a display type, then we need the condition else, we can ignore it -->
                        <c:if test="${queryOperations.displayName=='Test1'}">
                            <form:select path="searchFilterCondition" multiple="false">
                                <form:options items="${queryOperations.operands}"  value="${queryOperations.operands}" itemLabel="operandType"/>
                            </form:select>
                        </c:if>
                    </c:forEach>
...