2012-03-23 16 views
0

私はjspで働いています。 bean.getConfigurationActionButtonBar()は、ボタンオブジェクトのリストを返します。 WebUtils.getActionButtonBar(List buttonList)はそのリストを取得し、生成されたHTMLを返します。非常に簡単です。EL内で静的メソッドを使用するにはどうすればよいですか?

さて、何らかの理由で、これは動作しません:

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

ボタンリストが設定されています。 static WebUtils.getActionButtonBarの呼び出しで問題が発生しました。その呼び出しは決して行われません。何か案が?

答えて

2

EL関数として宣言し、別のtaglibに登録する必要があります。

しかし
<%@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> 

は、その後、あなたがそれを使用することができます。

まず/WEB-INF/functions.tldファイルを作成します要件。 HTMLは、未処理のJavaコードではなく、JSPファイルによって生成される必要があります。代わりに、JSPインクルードファイルまたはタグファイルを使用します。

+0

まあ、私は間違った道を行くつもりはありません。これは、htmlをStringBuilderにアセンブルして吐き出す静的メソッドへの呼び出しでした。典型的なカスタムタグロジック。これをカスタムタグのサポートに追加する前から、私が得ようとしていることを見たいだけでした。なぜjstlがそれに到達できなかったのか、私は困惑した。あなたの答えは、jstlはWebUtilsクラスまたはそのメソッドについて何も知らないと伝えます。私は私のカスタムタグtldに固執することを好むので、私はあなたの関数の設定を試していないし、すでにこのコードをそこに移動しました。あなたの貢献に感謝します。 – jacekn

+3

Javaのみが、冗長な17行の定義に合わせて直感的な3行ソリューションを禁止し、それを「進歩」と呼びます。 – Magnus