Как я могу использовать статические методы в EL? - PullRequest
0 голосов
/ 23 марта 2012

Я работаю в JSP. bean.getConfigurationActionButtonBar() возвращает список объектов кнопки. WebUtils.getActionButtonBar(List buttonList) берет этот список и возвращает сгенерированный HTML. Очень просто.

Теперь по какой-то причине это не работает:

<td colspan="2">
    ${WebUtils.getActionButtonBar(bean.getConfigurationActionButtonBar())}
</td>

Список кнопок настроен. Что-то не так с вызовом static WebUtils.getActionButtonBar. Этот звонок просто никогда не делается. Есть идеи?

1 Ответ

2 голосов
/ 23 марта 2012

Вам необходимо объявить его как функцию EL и зарегистрировать в отдельном теге.

Сначала создайте файл /WEB-INF/functions.tld:

<?xml version="1.0" encoding="UTF-8" ?>
<taglib 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">

    <display-name>Custom Functions</display-name>    
    <tlib-version>1.0</tlib-version>
    <uri>http://example.com/util</uri>

    <function>
        <name>getActionButtonBar</name>
        <function-class>com.example.WebUtils</function-class>
        <function-signature>java.lang.String getActionButtonBar(java.util.List)</function-signature>
    </function>
</taglib>

Затем вы можете использовать его следующим образом:

<%@taglib uri="http://example.com/util" prefix="util" %>
...
${util:getActionButtonBar(bean.getConfigurationActionButtonBar())}

Однако , вы идете совершенно по неверному пути в отношении достижения конкретного функционального требования.HTML должен генерироваться файлами JSP, а не необработанным кодом Java.Вместо этого используйте включаемый файл JSP или файл тегов.

...