2012-04-11 16 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を使用してください。他の詳細がなければ、どんな深いところにも行くのは難しいです。

しかし、あなたの問題を解決するためにもう1つのHTTP呼び出しを行うのは悪い考えですが、基本的にはモジュール化が悪いか、コードの再利用が不足していることを示しています。

私はJSとJavaの両方のWebスクリプトフローで一般的なコード部分をActionに移動したいと思います。入力パラメータを再パッケージすることなく、またはHTTP経由で送信することなく両方の場所から呼び出すことができます。

+0

ありがとうございます。しかし、今私は別の問題があります。 js webscript - "/ testUrl2/{origJs}"というJava webscriptの次のマッピングである "/ testUrl/{testVar1}/{testVar2}"次に、次のurl "testUrl2/testUrl/var1/var2"を使用してJava Web Scriptを呼び出します。その後Javaコードで "testUrl2"を削除し、 "/ testUrl/var1/var2" urlでWebScriptRequestURLImplオブジェクトを構築します。 – VladislavLysov

+0

しかし、WebScriptRequestURLImplを作成するときに、templateUrlとtemplateVarsを使ってMatchオブジェクトを作成する必要があります。しかし、取得する方法:1)js webscriptに複数のURLがある場合、「/ testUrl/var1/var2」のtemplateUrl? 2)js webscriptの "/ testUrl/var1/var2"からtemplateVarsを取​​得する方法は?ありがとうございました。 – VladislavLysov

+0

あなたは私が作った主な発言が不足しています:* Webスクリプトコントローラ内からWebスクリプトを呼び出すことは避けてください。意味がありません。それはあなたのsiamese双子の弟に電子メールを送信するようなものです。 – skuro

0

もちろん、skelloは、HTTPレイヤーを2回通過するのは間違っていると言っています。

の両方を実行すると、スクリプトコントローラーとJavaメソッドはそのままAlfrescoでサポートされています。醜いハッキングやHTTPレイヤー全体を2回通過することなくすぐに使用できます。

あなたはこれを行うことがあります。

は、対応の.jsファイル内のスクリプトコードを入れてください。

JavaクラスがDeclarativeWebScriptのサブクラスであることを確認し、executeImplをオーバーライドしてカスタムロジックをそこに配置します。

確かに、2つのコントローラーを使用することは悪いスタイルだと主張できます。 :)

関連する問題