Проверка JSTL FoEach, содержащая значениеInIgnoreCase, установленное в RequestScope - PullRequest
0 голосов
/ 25 июня 2019

У меня есть список городов, заданный в requestScope по сервлету.

Это мой код

Я добавил необходимые теги-метки

Не могли бы вы сказать, почемуcontainsIgnoreCase не работает

public class City {

    private Long id;
    private String name;
    private int population;

    // getters and setters 
}

// 

<c:forEach items="${requestScope.cityList}" var="city">
            <tr>

        <c:if test = "${fn:containsIgnoreCase(${city.name}, 'NewYork')}">
         <p>Add a Color Here for NewYork <p>
      </c:if>

            <c:if test = "${fn:containsIgnoreCase(${city.name}, 'Houston')}">
         <p>Add a Color Here Houston <p>
      </c:if>


                <td><c:out value="${city.id}"></c:out></td>
            <td><c:out value="${city.name}"></c:out></td>
            <td><c:out value="${city.population}"></c:out></td>
        </tr>
        </c:forEach>

Ответы [ 3 ]

1 голос
/ 25 июня 2019

Содержимое containsIgnoreCase недопустимо, поскольку вы пытаетесь открыть выражение (${city.name}) внутри другого выражения (${fn:containsIgnoreCase()}).

Вам следует упростить код до:

<c:if test = "${fn:containsIgnoreCase(city.name, 'Houston')}">
1 голос
/ 25 июня 2019

Должно быть ${fn:containsIgnoreCase(city.name, 'NewYork')}.Вы уже находитесь внутри выражения JSP EL, поэтому повторное использование ${} в этом выражении недопустимо.

0 голосов
/ 25 июня 2019

Вы не можете вкладывать выражения EL.

${city.name} будет иметь значение null, когда находится внутри другого выражения EL.Вот почему это не работает.

Вы можете объединить их, хотя:

${foo}${bar}

В вашем случае вы можете установить локальную переменную в блоке forEach следующим образом:

    <c:forEach items="${requestScope.cityList}" var="city">
 <c:set var="cityVar" value="${city.name}" />
                <tr>

            <c:if test = "${fn:containsIgnoreCase(cityVar, 'NewYork')}">
             <p>Add a Color Here for NewYork <p>
          </c:if>

                <c:if test = "${fn:containsIgnoreCase(cityVar, 'Houston')}">
             <p>Add a Color Here Houston <p>
          </c:if>


                    <td><c:out value="${city.id}"></c:out></td>
                <td><c:out value="${city.name}"></c:out></td>
                <td><c:out value="${city.population}"></c:out></td>
            </tr>
            </c:forEach>

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...