Parameters in EL methods

2019-03-06 13:44发布

I want to use a method in JSP using EL that has a parameter. But EL doesn't support parameters in methods. Actually I want to show a table, which has a field that output a list of values in one cell. For every cell this list will be different, it depends on parameter. How can I do this using EL?

I have tried this, but is says that it can not cast Integer to String in <c:set var="group" value="${entrant.idGroup}" /> where entrant.idGroup return int value

    <c:forEach var="entrant" items="${bean.entrants}">
                <tr>
            <td>${entrant.idEntrant}</td>
                    <c:set var="group" value="${entrant.idGroup}" />
                    <td><%=bean.getGroupCode(Integer.parseInt((String)pageContext.getAttribute("group")))%></td>
            <td>${entrant.name}</td>
     </c:forEach>

But even if it works, I want to use pure EL in JSP. How can I achieve this?

标签: java jsp el
1条回答
够拽才男人
2楼-- · 2019-03-06 14:39

The support for passing method arguments and invoking non-getter methods was introduced in EL 2.2 which is part of Servlet 3.0. So your best bet is to upgrade to a Servlet 3.0 compatible container, such as Tomcat 7, Glassfish 3, JBoss AS 6 and ensure that your web.xml is declared conform Servlet 3.0 spec, so that you can do the following:

<c:forEach var="entrant" items="${bean.entrants}">
    <tr>
        <td>${entrant.idEntrant}</td>
        <td>${bean.getGroupCode(entrant.idGroup)}</td>
        <td>${entrant.name}</td>
    </tr>
</c:forEach>

If your container doesn't support it, then your best bet is to create a custom EL function.

        <td>${some:getGroupCode(bean, entrant.idGroup)}</td>
查看更多
登录 后发表回答