2012-04-11 54 views
0

我遇到問題。我需要從Java webscript執行js webscript。我知道,它是如何做到的:在Alfresco中從Java webscript調用js webscript

req.getRuntime().getContainer().getRegistry().getWebScript("com/home/testJs/testJs.get").execute(req, res) 

,但是如何構造新的WebScriptRequest對象?我需要重寫請求路徑。這對我來說確實是一個問題。 謝謝。

回答

3

一般來說,您應該使用WebScriptRequestURLImpl。沒有任何其他細節,這是很難走得更深。

也就是說,通過另一個HTTP調用來解決您的問題通常是一個糟糕的主意,它基本上表明模塊化不良或缺少代碼重用。

我寧願將JS和Java Web腳本流程中常見的代碼片段移動爲Action,您可以從兩個位置調用這些代碼,而無需重新打包輸入參數,或者更糟糕的是通過HTTP發送它們。

+0

謝謝你的回覆。但現在我有另一個問題。如果我有下一個js webscript映射 - 「/ testUrl/{testVar1}/{testVar2}」,併爲Java webscript創建下一個映射,它稱爲js webscript - 「/ testUrl2/{origJs}」。然後我使用下一個URL「testUrl2/testUrl/var1/var2」調用Java webscript。之後,在Java代碼中,我移除「testUrl2」並使用「/ testUrl/var1/var2」url構建WebScriptRequestURLImpl對象。 – VladislavLysov 2012-04-12 14:32:21

+0

但是,當我創建WebScriptRequestURLImpl我需要與templateUrl和templateVars創建匹配對象。但如何得到:1)templateUrl爲「/ testUrl/var1/var2」如果js webscript有多個url? 2)如何從「/ testUrl/var1/var2」獲取js webscript的templateVars?謝謝。 – VladislavLysov 2012-04-12 14:43:48

+0

您錯過了我所做的主要評論:*避免*從Web腳本控制器中調用Web腳本,它沒有任何意義。這就像給你的暹羅雙胞胎兄弟發電子郵件一樣。 – skuro 2012-04-12 14:52:32

0

當然skuro是正確的說這是一個壞主意通過HTTP層兩次。

但事實上,執行這兩個,一個腳本控制器和一個Java方法是由Alfresco立即支持 - 沒有醜陋的黑客,並且沒有通過整個HTTP層兩次。

您可以這樣做:

將腳本代碼放入相應的.js文件中。

確保您的Java類是DeclarativeWebScript的子類,覆蓋executeImpl並將您的自定義邏輯放在那裏。

當然,你仍然可以爭辯說,有兩個控制器是不好的風格。 :)

相關問題