2016-09-27 5 views
-1

JSTLとTLDを使用してJSPからJava関数とやりとりする方法を理解しようとしています。この特定の関数は、戻り値を持っていないので、私は、私はELコールでまっすぐJSPでそれを呼び出す必要がありますと仮定しています:TLDに戻りのないJava関数

<html code here> 
${prefix:createChildPage(currentPage, resourceResolver, strings, string)} 
<other jstl code here> 
<more html here> 

しかし、私はきちんとTLDを設定する方法を見つけ出すことはできませんこの。 Java関数は次​​のようになります。

public static void createChildPage(Page page, ResourceResolver resourceResolver, String[] strings, String string) throws Exception { 
    // code in here 
} 

ご覧のとおり、返されません。この関数は入力引数を取り、JCR/Oakノード構造を使用してAdobe CQ/AEM環境内で子ページ構造を構築するために使用します。だから、私はこのようなTLD関数を設定しようとしましたが、メソッドが自分のクラスに存在しないことを教えてくれません。まず

<function> 
    <name>createChildPage</name> 
    <function-class>com.org.utils.ClassName</function-class> 
    <function-signature>createChildPage(com.day.cq.wcm.api.Page, org.apache.sling.api.resource.ResourceResolver, java.lang.String, java.lang.String)</function-signature> 
</function> 

、私はそれは私がちょうどTLDのためのString []を分類する方法がわからないということかもしれません考えていました。しかし、私は同じ結果で非常に多くのクラスを試しました、私はそれが私がリターンを指定していないという事実と関係があるかもしれないことはかなり確信しています。上のサンプルコードでは、String []をjava.lang.Stringとして分類しましたが、おそらくjava.util.Arrayであると考えられます。私は壁に私の頭を動かし、この時点で実際には分からない。そして、私はJSPから呼び出しのいくつかの方法を持っている必要があるので、私はそれのためのTLD関数が必要と仮定しています(したがって、${prefix:コードの一部。

私の質問はこれです。 ?リターンを持っていないページがロードされるとそれはちょうど何かをJSTL/ELを使用してJSPからJava関数

答えて

0

私は、作成されたページへのパスを返す別の関数から関数を呼び出すことになりました。

public static String getArticleIncludePath(Page givenPage, String pageName, ResourceResolver resourceResolver) throws Exception { 
    // Call createChildPage to build out child page as needed 
    createChildPage(givenPage, resourceResolver, pageName); 
    // Now get the child includePath 
    String childPath = givenPage.getPath() + pageName; 
    return childPath; 
} 
0

あなたは単に無視される値を返す考えがあり のような:。?

public static int createChildPage(Page page, ResourceResolver resourceResolver, String[] strings, String string) throws Exception { 
    // code in here 
    return 0; 
} 
+0

私はこれを考慮しました。しかし、それは私が知っている限り、良いコーディング実践に従わない。これはエンタープライズプロジェクト用ですので、私が引き渡すコードはできるだけきれいであることを確認したいと思います。私は、この方法を使用して問題が返品の欠如であるかどうかを確認することができたと思います。 – Tyrelius