Вы не можете вкладывать выражения 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>
Надеюсь, это поможет