使用JSTL和scriptlet的JSP

时间:2011-10-07 08:19:05

标签: jsp jstl scriptlet

我有一些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>

我可以用这种方式实现我想要的吗?

2 个答案:

答案 0 :(得分:1)

看起来很丑陋。对所有子句使用<c:if>。使用scriptlet会导致这些错误 - 未封闭的括号,被遗忘的分号等等。

答案 1 :(得分:0)

除非在非常紧急的情况下,否则不应使用任何scriptlet。

您可以使用以下<%=currentBackground%>代替:

  • 您的Java bean中的request.setAttribute(“currentBackground”,yourObject)
  • useBean使用getter / setter

然后正确使用Expression Language和$ {currentBackground}来获取你的对象。