1

jsfbeanのperameterでカスタムEL関数を使用してメソッドを呼び出そうとしています。

<c:set var="test1" value="${cx:methodName('para')}" scope="session"/>
        <h:outputText value="#{test1}"/>

次のIDTLDを作成し、WEB-INFに入れました

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

        <tlib-version>1.0</tlib-version>
        <short-name>Custom_Functions</short-name>
        <uri>http://example.com/functions</uri>

        <function>
            <name>methodName</name>
            <function-class>funcionclass(Jsfbean)</function-class>
            <function-signature>java.lang.String methodName(java.lang.String)</function-signature>
        </function>
    </taglib>

また、web.xmlで構成します

<jsp-config> 
        <taglib> 
               <taglib-uri>http://example.com/functions</taglib-uri> 
               <taglib-location>/WEB-INF/functions.tld</taglib-location> 
        </taglib> 
</jsp-config>

それでも、関数が見つからないというエラーが発生しています。

以下はメソッドコードです

public static String methodName(String s1) throws Exception
    {
        return "Kshitij";
    }

どんな体も助けることができます。

4

2 に答える 2

3

Faceletsの使用中にJSPEL関数を作成しました。これは機能しません。また、あなたの<function-class>宣言は正しくありません。完全修飾クラス名(FQN)を指定する必要があります。例com.example.FunctionClass

taglibファイルの名前/WEB-INF/functions.taglib.xmlを次の更新されたコンテンツでに変更します。

<?xml version="1.0" encoding="UTF-8"?>
<facelet-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-facelettaglibrary_2_0.xsd"
    version="2.0">
    <namespace>http://example.com/functions</namespace>

    <function>
        <function-name>methodName</function-name>
        <function-class>com.example.FunctionClass</function-class>
        <function-signature>java.lang.String methodName(java.lang.String)</function-signature>
    </function>
</facelet-taglib>

次に、次のように登録する必要がありweb.xmlます(古いJSP taglib登録を削除することを忘れないでください!):

<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/functions.taglib.xml</param-value>
</context-param>

最後に、次のXML名前空間を使用してビューで宣言します

xmlns:cx="http://example.com/functions"

具体的な問題とは関係なく、おそらくはるかに簡単な代替アプローチがあります。JBossELをインストールします。このようにして、新しいEL2.2のようにBeanでメソッドを呼び出すことができます。

于 2012-04-19T12:21:08.700 に答える
1

それでも、jspに参照を含める必要があります。

<%@taglib prefix="cx" uri="http://example.com/functions"%>
于 2012-04-19T11:37:26.170 に答える