2016-09-27 24 views
-1

所以,我想弄清楚如何使用JSTL和頂級域名與JSP中的Java函數進行交互。這種特殊的功能沒有回報,所以我假設我需要將其與EL電話呼叫在JSP直線上升:頂級域名中沒有返回的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 
} 

正如您所看到的,沒有任何回報。該功能只需輸入參數,並使用這些參數在Adobe CQ/AEM環境內使用JCR/Oak節點結構構建子頁面結構。所以,我試圖設置這樣的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。我已經把頭撞到了牆上,現在還不能確定。我假設我需要TLD函數,因爲我必須從JSP調用一些方法(因此,${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