JSP с использованием JSTL и скриптлетов

У меня есть эта страница jsp с некоторыми условиями:

<%      
        if (filterPresent.equals("true") && !selectedFilterCategory.isEmpty()){
%>
        <c:if test="${entry.category eq param.selectedFilterCategory}">
<%
        }
%>
                RENDER A TABLE WITH ITEMS

<%
        if ( filterPresent.equals("true") && !selectedFilterCategory.isEmpty() ) {
%>
        </c:if>
<%
       }
%>

Если это значение filterPresent равно true, я хочу, чтобы отображались только некоторые элементы (те, которые соответствуют категории). Если его нет, я хочу отобразить все элементы.

Ошибка, которую я получаю:

An error occurred at line: 48 in the jsp file: /jsp//ejbChildRule.jsp
Syntax error, insert "while ( Expression ) ;" to complete BlockStatements
45: %>
46:             <c:if test="${entry.category eq param.selectedFilterCategory}">
47: <%
48:             }
49: %>
50:                 <tr class="<%=currentBackground%>">
51:                             <td  class="<%=currentBackground%>" align="left" valign="middle" nowrap>

Могу ли я достичь того, чего хочу, таким образом?


person Sergiu    schedule 07.10.2011    source источник
comment
пожалуйста, предоставьте еще несколько строк кода, тогда он будет четко решен.   -  person Siva Charan    schedule 07.10.2011
comment
Смешивание taglib и скриптлетов — большая проблема. Используйте одно или другое, а не оба. Я рекомендую вообще избавиться от скриптлетов, так как это считается обескураживающим уже почти десятилетие.   -  person BalusC    schedule 07.10.2011


Ответы (2)


вы НЕ должны использовать какие-либо скриптлеты, за исключением очень срочных обстоятельств.

Вместо <%=currentBackground%> вы можете использовать:

  • request.setAttribute("currentBackground", yourObject) внутри ваших Java-бинов
  • или useBean с геттером/сеттером

затем правильно используйте язык выражений с ${currentBackground} для получения вашего объекта .

person Nicolas Zozol    schedule 07.10.2011

Это выглядит довольно некрасиво. Используйте <c:if> для всех предложений. Использование скриптлетов приводит к такого рода ошибкам - незакрытые скобки, забытые точки с запятой и т.д.

person Bozho    schedule 07.10.2011