2012-03-23 25 views
0

我正在jsp中工作。 bean.getConfigurationActionButtonBar()返回按钮对象列表。 WebUtils.getActionButtonBar(List buttonList)获取该列表并返回生成的html。很简单。现在如何在EL中使用静态方法?

,出于某种原因,这并不工作:

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

按钮列表设置。拨打静态WebUtils.getActionButtonBar时出现问题。这个电话根本就没有做过。任何想法?

回答

2

您需要将其声明为EL函数并将其注册到单独的taglib中。

首先创建一个/WEB-INF/functions.tld文件:

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

但是,你会完全走错了路,以实现具体功能:

<?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> 

然后你就可以按如下方式使用它需求。 HTML应该由JSP文件生成,而不是由原始Java代码生成。改为使用JSP包含文件或标记文件。

+0

那么,我不会走错路。这是一个静态方法的调用,该方法将html组装成一个StringBuilder并将其吐出。典型的定制标签逻辑。我甚至想在开始将其添加到自定义标签支持之前看看我将要获得的内容。我很困惑,至于为什么jstl无法实现。你的回答告诉我,jstl对WebUtils类或其方法一无所知。我还没有尝试过你的函数设置,因为我更喜欢坚持自定义标记tld,并且已经将此代码移动到那里。感谢您的贡献。 – jacekn 2012-03-24 04:04:46

+3

只有Java可以禁止直观的3线解决方案支持冗余的17行定义并将其称为“进度” – Magnus 2012-08-17 21:13:04

相关问题